【发布时间】:2021-07-13 22:01:46
【问题描述】:
我连接到 outlook.office365.com 以通过库 IMAPClient (Python) 同步电子邮件。通过 IDLE mechanizm,我在服务器上收到更改,例如文件夹 INBOX 中的新电子邮件。之后,我获取 UID {last_synced_uid}:* 的邮件 - 这应该会在上次同步后给我所有邮件(UID 总是递增)。
此流程有效,但有时 IMAP 服务器 (outlook.office365.com) 不返回新邮件但已同步。运行完全同步有时会起作用,但并非总是如此 - 我的意思是在日期之后搜索邮件并按 UID 获取。
在这种情况下,我手动将邮件从收件箱移动到其他文件夹并再次移动到收件箱,这始终有效 - 之后我的脚本检测到收件箱中的新邮件并使用 UID {last_synced_uid} 获取:*
Office365 似乎有时会在通过 UID 获取时出现问题。 相同的邮件在其他邮件客户端(如雷鸟)中可见,因此可能有一些解决方法,或者它是 IMAPClient/imaplib 中的错误
last_synced_uid 为 1619 的监控文件夹的日志如下:
- 空闲响应:[(10, b'RECENT'), (618, b'EXISTS')]
- 开始 FETCH UID 1620:*
- FETCH 返回 UID 1619、SEQ 617 的邮件
- last_synced_uid 1619 未更改
【问题讨论】:
-
你好......只是一个建议......如果可能的话,使用 microsoft graph api 来获取 Outlook 邮件信息。它们会更容易,因为它是一个 REST 实现,而且你有很多文档
-
感谢您的建议 :)
标签: python office365 imap imapclient