我连接到 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 没有改变