使用POP3在python中读取具有特定地址的Outlook电子邮件

时间:2016-07-12 06:57:35

标签: python pop3 outlook.com

import getpass, poplib
user = 'my_user_name' 
Mailbox = poplib.POP3_SSL('pop-mail.outlook.com.com', '995') 
Mailbox.user(user) 
Mailbox.pass_('my_password') 
numMessages = len(Mailbox.list()[1])
for i in range(numMessages):
    for msg in Mailbox.retr(i+1)[1]:
        print msg
Mailbox.quit()

以上代码来自python POP3文档,我使用它并且它有效。但是,这不是我想要的。我想阅读那些来自特定地址的电子邮件。我没有在python POP3库中找到任何方法。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

POP3协议仅允许:

  • 获取消息数
  • 检索完整的消息
  • 删除邮件

可选命令(TOP msg n)允许只读取消息的n个第一行。理论上,您可以使用它仅完全下载来自特定地址的消息。 poplib模块支持此命令,但手册中说明:

  

...遗憾的是,在RFC中指定的TOP很少,并且在品牌外的服务器中经常被破坏。在信任之前,请手动对照您将使用的POP3服务器测试此方法。

我的建议是甚至不尝试使用,它很可能迟早会破坏。如果您必须坚持使用POP3做邮件阅读器的操作:下载所有内容并过滤客户端。如果您真的要过滤消息服务器端,请忘记POP3协议并使用针对它的IMAP4。它通过imaplib模块

在Python中提供了很好的支持