1

我使用以下代码从我的 gmail 帐户读取邮件。

import poplib
pop_conn = poplib.POP3_SSL('pop.gmail.com')
pop_conn.user('user')             # result: '+OK send PASS'
pop_conn.pass_('password')        # result: '+OK Welcome.'
print pop_conn.list()[1]
pop_conn.quit()

它按预期向我显示了 1 条消息。
但是,如果我第二次运行此脚本,我会收到 0 条消息。在服务器上,消息仍然存在且未读。
我怎样才能让所有消息也第二次运行脚本?

对我来说,它就像一个电子邮件客户端,不会两次下载相同的邮件。是否有一些标志可以强制程序再次下载所有内容?我在 ubuntu 12.10 上使用 python 2.7.x

4

1 回答 1

1

你确定这就是你在事情发生时所做的一切吗?据我所知,只是使用list()不应该那样做,但是如果您retr()以前也阅读过邮件内容,那么 POP3 服务器通常会标记该邮件,并且不会再在进一步连接时返回它。

您可以尝试改用 IMAP,因为它可以让您更详细地指定行为,例如。您可以告诉它不要将消息标记为已查看,并允许您多次检索它们。Google 支持 IMAP,python 有 imaplib 可以使用它。

于 2012-10-25T05:15:50.173 回答