2011-11-01 70 views
2

我有計劃在Java中實現郵件應用程序。 因此,我有一個關於檢查新郵件存在的問題。如何實現通過IMAP檢查新郵件?

例如,在Thunderbird中, 服務器首選項中存在輪詢間隔選項。 (默認時間間隔爲10分鐘) 但是,thunderbird看起來像是在新郵件到來時立即通知。 但是,此行爲相同,但默認間隔更改。

這段間隔是什麼意思? 而且,如何實現應用程序在發送新郵件時立即通知。 (我應該實現一個應用程序有輪詢檢查功能是否有新郵件來嗎?)

+0

afaik thunderbird通過IMAP IDLE執行該操作http://en.wikipedia.org/wiki/IMAP_IDLE – Gryphius

+1

您可以使用JavaMail庫,因此您不必親自實施所有IMAP功能。 –

回答

1

默認情況下,當使用IMAP客戶端將連接,看看是否有任何新消息,如果有處理它們,斷開連接如果不只是斷開連接。然後客戶會在10分鐘的時間間隔後再次嘗試。但是,IMAP中有一個名爲IDLE的命令。這基本上表明您希望保持連接開放,並在發生新消息時得到通知。該命令在RFC2177中定義。

的命令是(從RFC2177)相當簡單:

C: A002 IDLE 
S: + idling 
...time passes; new mail arrives... 
S: * 4 EXISTS 
C: DONE 

我不知道任何Java客戶端是否支持這一點,但如果沒有這將是非常容易實現。您還需要添加一些內容來檢查服務器是否支持IDLE命令(使用功能),並在發生故障時重新連接。

同樣值得注意的是,有些系統可以讓您以http文章的形式接收您的電子郵件。例如http://cloudmailin.com。這使您可以享受「實時」響應時間,而無需查詢電子郵件。