Go 有没有更好的方式观看imap邮箱更新?

Go 有没有更好的方式观看imap邮箱更新?,go,imap,Go,Imap,我尝试过IMAP空闲方式,这种方式在大多数情况下都有效,但是: 有时是错过的事件。。。状态更新,这是一个延迟消息,使我的脚本混乱 电子邮件ISP有时会关闭imap连接,连接可能只持续几分钟 当大量电子邮件涌入时,例如每秒一封电子邮件。空闲状态缺少批次的事件 我知道这可能应该归咎于电子邮件ISP,但有没有更好的方法可以让我及时、可靠地收到电子邮件通知 或者我只是用硬方法,长循环检查电子邮件?IDLE不会告诉你有一条新消息,它告诉你发生了什么事。它可能是一条新消息,或者十条,可能是一条正在删除的消息

我尝试过IMAP空闲方式,这种方式在大多数情况下都有效,但是:

  • 有时是错过的事件。。。状态更新,这是一个延迟消息,使我的脚本混乱
  • 电子邮件ISP有时会关闭imap连接,连接可能只持续几分钟
  • 当大量电子邮件涌入时,例如每秒一封电子邮件。空闲状态缺少批次的事件
  • 我知道这可能应该归咎于电子邮件ISP,但有没有更好的方法可以让我及时、可靠地收到电子邮件通知


    或者我只是用硬方法,长循环检查电子邮件?

    IDLE不会告诉你有一条新消息,它告诉你发生了什么事。它可能是一条新消息,或者十条,可能是一条正在删除的消息,或者十条,或者是另一个更改。由你来检查。(如果要测试代码的处理方式,可以使用
    UID COPY
    EXPUNGE
    进行大的更改)


    关闭连接也是您需要解决的问题。IMAP服务器可以关闭连接(出于好的或坏的原因),但通常是由客户的NAT中间盒完成的。只有客户端可以重新连接以解决NAT问题,解决NAT问题也可以解决服务器问题,这是一个副作用。

    IDLE不会告诉您有一条新消息,它会告诉您发生了什么。它可能是一条新消息,或者十条,可能是一条正在删除的消息,或者十条,或者是另一个更改。由你来检查。(如果要测试代码的处理方式,可以使用
    UID COPY
    EXPUNGE
    进行大的更改)

    关闭连接也是您需要解决的问题。IMAP服务器可以关闭连接(出于好的或坏的原因),但通常是由客户的NAT中间盒完成的。只有客户端可以重新连接以解决NAT问题,解决NAT问题也可以解决服务器问题,这是一个副作用。

    我使用的是golang,带有。arnt的回答确实有帮助,我将重构代码以获得更好的处理程序。arnt的回答确实有帮助,我将重构代码以获得更好的处理程序。