有没有更好的方法来观看 imap 邮箱更新?

Any better way to watch imap email box update?

我已经尝试过 IMAP idle 方式,这在大多数时间都有效,但是:

  1. 有时会丢失事件... IDLE 看到的更新状态是一条延迟消息,让我的脚本感到困惑。
  2. 电子邮件 ISP 有时会关闭 imap 连接,连接可能只持续几分钟。
  3. 当大量电子邮件涌入时,例如每秒一封电子邮件。 IDLE 状态缺少批次的事件。

我知道这可能主要归咎于电子邮件 ISP,但有没有更好的方法可以让我及时可靠地收到电子邮件通知。

或者我只是使用硬方式,长时间循环检查电子邮件?

IDLE 不会告诉您有一条新消息,它会告诉您发生了一些事情。它可能是一条新消息,也可能是十条消息,可能是一条消息被删除,也可能是十条消息,也可能是另一条更改。由你来检查。 (如果你想测试你的代码如何处理它,你可以使用 UID COPYEXPUNGE。)

连接被关闭也是你要解决的问题。 IMAP 服务器可以关闭连接(出于好或坏的原因),但通常是由属于客户的 NAT 中间件完成的。只有客户端重连才能解决NAT问题,解决NAT问题也就解决了服务器问题,作为副作用。