【发布时间】:2015-10-30 22:58:20
【问题描述】:
我试图找出这里的问题。我不明白。
问题:我一次只能从收件箱收到一半的消息。当我再次运行时,它会收到另一半的消息,依此类推,直到没有消息为止。
设置:我正在尝试在 Debian 7 上使用 python 2.7.3(我知道它很旧)从 Exchange Server 2013 中使用 imaplib.fetch 获取消息。
def fetch_mails():
messages = []
mailbox = IMAP4_SSL(host = mail_host, port = mail_port)
mailbox.login(mail_user, mail_password)
mailbox.select()
mailcount = mailbox.search(None, 'ALL')[1][0]
mailcount = sum(1 for num in mailcount.split())
for i in xrange(1, mailcount+1):
mailbox.select()
status, data = mailbox.fetch(str(i), '(RFC822)')
current = email.message_from_string(data[0][1])
messages.append(current)
mailbox.store(i, '+FLAGS', r'\Deleted')
return messages
ERROR: '指定的消息集无效。'
有人知道为什么会这样吗?最后我可以处理所有的邮件,但不是一次运行。 提前感谢您的帮助!
【问题讨论】:
-
mailcount = sum(1 for num in mailcount.split())很傻。len(mailcount.split())更短,而且 select() 的返回值是邮箱中的邮件数量,所以如果使用序列号,则根本不需要搜索。
标签: python exchange-server imap