poplib和email模块如果已读取它,则不会重新通过消息

时间:2012-06-06 22:37:01

标签: python email poplib

我目前正在尝试编写一个从我的Gmail帐户获取邮件的脚本,但我注意到了一个问题。如果poplib在我的收件箱中循环播放一条消息,它将永远不会再循环播放它。这是我的代码

import poplib, string, email

user = "jj@gmail.com"
password = "password"

message = ""
mail = poplib.POP3_SSL('pop.gmail.com')
mail.user(user)
mail.pass_(password)

iMessageCount = len(mail.list()[1])
message = ""
msg = mail.retr(iMessageCount)
str = string.join(msg[1], "\n")
frmMail = email.message_from_string(str)

for part in frmMail.walk():
    if part.get_content_type() == "text/plain":
        print part.get_payload()

mail.quit()

每次运行此脚本时,它都会转到下一个最新的电子邮件,只是跳过上次运行时显示的电子邮件。

1 个答案:

答案 0 :(得分:1)

使用mail.retr()检索邮件会为该邮件设置看到的标记,因此在调用mail.list()后,{} {}}将无法再显示该邮件。

如果您不致电mail.quit(),您的邮件将无法显示。

BTW,gmail支持通常比POP3好的IMAP。