我试着找出问题所在。我不明白。在
问题:我一次只能从收件箱收到一半的邮件。当我再次运行时,它会收到另一半的消息,以此类推,直到没有剩下的消息。在
设置:我尝试在Debian7上使用Python2.7.3(我知道它很旧)来获取消息imaplib.fetch来自Exchange Server 2013。在
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
错误:“指定的消息集无效。”
有人知道为什么会这样吗?最后我可以处理所有的邮件,但不能一次处理。 提前感谢您的帮助!在
这里有两个问题,它们共同表现出这种行为:
因此,代码下载消息1,将其标记为已删除,然后重新选择邮箱,允许服务器删除它,将消息2-N向下移动到messages 1-(N-1)。然后下载消息2(之前是第三条消息),然后重复。正因为如此,你只能下载其他邮件。在
有两种修复方法:
以下是两个更改后的代码:
我还没有测试代码,所以您可能需要做一些小的更改。在
相关问题 更多 >
编程相关推荐