【问题标题】:Get emails from intranet mailbox with Python on Linux system在 Linux 系统上使用 Python 从内网邮箱获取电子邮件
【发布时间】:2019-01-23 19:19:28
【问题描述】:

通过将其设置为不同的帐户,我可以在本地系统的 Outlook 中使用我的凭据用户名和密码从公司内部网邮箱“ABCName.company.com”访问电子邮件。

另外,我可以使用以下 python 代码自动发送电子邮件:

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder_inbox = outlook.Folders("ABCName").Folders("Inbox")
messages = folder_inbox.Items
message = messages.GetFirst()

如何使用我的凭据从 linux 服务器连接到同一个 ABCName 邮箱以获取电子邮件? Linux 服务器没有 Outlook 设置。

【问题讨论】:

  • 你知道你那里的代码实际上在做什么,对吧?它是利用操作系统和软件中的内置功能与自己的产品进行通信吗?您正在寻找的可能是imap 库。没有其他方法可以做到这一点,除非你也通过 Wine 和 python 在 Wine 中运行 Outlook。或者只是一个虚拟机并通过libvirt 或kvm 进行通信

标签: python linux email outlook exchange-server


【解决方案1】:

该代码未连接到邮件服务器。 Outlook 是一个客户端电子邮件应用程序,它连接到邮件服务器并使用某种协议(IMAP、POP3、MAPI 等)下载邮件。该代码只是从 Outlook 配置文件中读取邮件,这些邮件已从服务器中提取。请注意,如果没有为“ABCName”帐户安装和配置 Outlook,此代码将无法在任何其他机器上运行 - 包括其他 Windows 机器。

Python 在 Windows 和 Linux 上运行,因此假设脚本配置正确,它应该在任何操作系统上运行。您需要一个可以从邮件服务器读取的应用程序,而不是客户端电子邮件应用程序。您实现的模块取决于邮件服务器支持的协议。

对于 POP3,你可以使用 poplib:

https://docs.python.org/3/library/poplib.html

对于 IMAP,您可以使用 imaplib:

https://docs.python.org/2/library/imaplib.html

【讨论】:

  • 感谢戴维斯的回复。您能否指导我通过 imap 进行连接的最小示例 - 比如我在哪里提供邮箱名称及其文件夹名称?在您提到的 imap 示例链接上是: import getpass, imaplib M = imaplib.IMAP4() M.login(getpass.getuser(), getpass.getpass()) M.select() typ, data = M.search(None , 'ALL') for num in data[0].split(): typ, data = M.fetch(num, '(RFC822)') print 'Message %s\n%s\n' % (num, data [0][1]) M.close() M.logout()
  • 这个页面有很多关于 imaplib 的好信息:pymotw.com/2/imaplib/#listing-mailboxes
  • 感谢戴维斯的所有帮助。
猜你喜欢
  • 1970-01-01
  • 2011-05-30
  • 1970-01-01
  • 2018-01-25
  • 2020-05-30
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多