2012-03-27 56 views
0

我正在使用IMAP c-客戶端庫同步用於GMail帳戶的電子郵件的郵件客戶端應用程序。如何在郵箱搜索技術以外的郵箱中獲得看不見/未讀的電子郵件

如何才能在郵箱中獲取最近看不見的/未讀的電子郵件,而不會盲目搜索全部未讀電子郵件?

郵件搜索需要拉所有每次同步到客戶端的未讀電子郵件,但它是每個同步執行相當昂貴的操作。 有沒有更好的方法來向客戶端傳達與之前與服務器進行交互時未同步的未讀電子郵件?

例如,Thunderbird能夠通過一些機制(可能通過盲目搜索所有看不見的電子郵件)同步看不到的電子郵件,因爲IDLE命令不會通知客戶端關於它們。

是否有一些機制可以告訴客戶端關於自上次同步以來出現的未讀電子郵件?

回答

0

有一個IMAP擴展快速標誌更改重新同步RFC-4551)。通過此擴展,可以搜索自上次同步以來發生更改的所有消息(基於某種時間戳)。然而,這個擴展並沒有得到廣泛的支持 - 特別是不Gmail的IMAP服務器:

* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE 

存在描述IMAP客戶端應該怎麼做同步(RFC-4549,第4.3節)的信息RFC。文本建議發出以下兩個命令:

tag1 UID FETCH <lastseenuid+1>:* <descriptors> 
tag2 UID FETCH 1:<lastseenuid> FLAGS 

第一命令用於獲取所有未知郵件所需的信息(在不知道多少郵件有)。第二個命令用於同步已經看到的郵件的標誌。

這種方法被廣泛使用。因此,爲了快速提供這些信息,許多IMAP服務器都進行了優化。通常,網絡帶寬是限制因素。

如果您只對UNSEEN標誌感興趣,UID SEARCH可能是您可以做的最好的選擇。

+0

感謝您的建議 – 2012-05-02 15:29:05

相關問題