使用poplib,Python获取UnRead消息

时间:2013-12-06 01:22:33

标签: python email poplib

我正在尝试编写一些脚本来检查使用pop3的邮件服务。如您所见,我使用poplib模块。但是,我没有看到获取未读消息的正确方法。 我找到了一个检索所有邮件的方法,因此在这次调用中需要花费很多时间:

messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]

有没有办法过滤未读邮件? 你知道其他任何好的模块来处理pop邮件服务吗? 这是我正在使用的代码:

import poplib
from email import parser
pop_conn = poplib.POP3_SSL('pop3.live.com', 995) #Connect to hotmail pop3 server
pop_conn.user('address')
pop_conn.pass_('password')
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
    print "{} : {}\n".format(message['subject'], message['From'])
pop_conn.quit()

1 个答案:

答案 0 :(得分:0)

有一种解决方法。

您可以使用message_count, mailbox_size = pop_conn.stat()检索message_count并以某种方式存储。稍后,您可以再次调用pop_conn.stat()并将message_count与存储的值进行比较(如果存储的值发生更改,请记得更新存储的值)。区别在于“未读”的邮件。