0

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

1 回答 1

0

我将回答我自己的问题 - 在 IMAP 连接上多次选择同一个文件夹可能会产生此问题。

于 2021-05-19T11:27:23.633 回答