2011-03-22 104 views
1

由於電子郵件服務器禁止搜索命令,因此我需要IMAP搜索命令「搜索1:*未看到未刪除」的替代方法。我嘗試使用「狀態(不可見)」,但它總是返回零,雖然有未讀消息。這個命令有沒有其他選擇?提前致謝。IMAP搜索命令的替代方案

+0

你是什麼意思的「禁止搜索命令」?你在做自己的IMAP客戶端還是使用JavaMail? – dkarp 2011-03-22 14:23:20

+0

你好dkarp,我使用k9mail作爲我的電子郵件客戶端。我發現搜索命令缺少uid參數。我沒有使用「全部搜索」,而是使用了「全部搜索結果」,它起作用。 – exception01 2011-03-24 11:17:29

回答

2

您的問題是IMAP服務器根本不支持SEARCH,或者它不喜歡您特定的SEARCH命令?如果是後者,我們可以簡化:

A SEARCH UNSEEN UNDELETED 

(如1:*是隱含的)。更簡單 - 只是在情況下,服務器不喜歡和荷蘭國際集團SEARCH方面一起的話 - 是:

A SEARCH UNSEEN 
B SEARCH DELETED 

和邏輯做,在你的代碼。

做它的蠻力的方法是:

C UID FETCH 1:* FLAGS 

,然後挑選出既不\Seen也不\Deleted所有的人。 (我建議UID FETCH,因爲類似的FETCH命令將在一個空文件夾返回BAD。)

此外,you're not supposed to call the STATUS command on the currently-selected folder

注:STATUS命令的目的是訪問比其他郵箱的 狀態當前選擇的 郵箱。由於STATUS命令可能導致 郵箱在內部打開,並且由於此 信息可通過選定的 郵箱上的其他方式獲得,所以在當前選定的郵箱上不應使用STATUS命令。

+0

順便說一句,謝謝你的答案。 UID是關鍵! – exception01 2011-03-24 11:30:13