2017-04-07 49 views
0

我曾嘗試IMAP IDLE方式,在大部分時間工作,但:任何更好的方式來觀看IMAP郵箱更新?

  1. 有時缺少事件...更新狀態,其IDLE看着它是一個延遲的消息,讓我的腳本混淆。
  2. 電子郵件ISP有時會關閉imap conneciton,連接可能只是最後幾分鐘。
  3. 當很多電子郵件涌入,如每秒一封電子郵件。空閒狀態缺少很多事件。

我知道這可能主要是應該責怪電子郵件ISP,但是有沒有更好的方法我可以及時和可靠地獲得電子郵件通知。

或者我只是用硬的方式,長時間循環檢查電子郵件?

+0

我使用golang,並使用https://github.com/emersion/go-imap-idle。 arnt的答案確實有幫助,我會重構我的代碼以獲得更好的處理程序。 – rmrf100

回答

2

IDLE不會告訴您有一條新消息,它會告訴您發生了一些事情。它可能是一個新消息,或十個,它可能是一個消息被刪除,或十個,或者它可能是另一個變化。這是由你來檢查。 (如果要測試代碼如何處理它,可以使用UID COPYEXPUNGE進行大的更改。)

正在關閉的連接也是您要解決的問題。 IMAP服務器可以關閉連接(出於好的或壞的原因),但通常是由屬於客戶的NAT中間件完成的。只有客戶端可以重新連接來解決NAT問題,並且解決NAT問題也可以解決服務器問題,作爲副作用。