2011-11-15 104 views
0

我正在使用MailSystem.NET操作系統庫來處理IMAP。我的客戶端程序出現問題(用C#編寫)。它使用IMAP庫查詢郵件服務器。它將消息添加到客戶端數據庫後標記爲已刪除。但是,我不一定希望刪除電子郵件,因爲其他客戶端將無法閱讀電子郵件。使用IMAP刪除郵件不會從MailSystem.NET中刪除郵件

因此,我調用DeleteMessage(1,false),它應該將郵件標記爲已刪除,但由於'expunge'設置爲false,因此它不會從服務器上物理刪除。

如果我打開Thunderbird(一個不同的客戶端)並連接到郵箱,果然消息已經消失。但是,我的另一位客戶看到該消息仍然存在。郵件計數顯示爲1.如何確保當我從「INBOX」郵件文件夾返回郵件計數時,它只返回那些未標記爲刪除的郵件,即那些尚未被客戶端程序讀取的郵件計數?

+0

這是郵件客戶端依賴,你不能做任何事情。選擇命令EXISTS響應總是返回郵箱中的郵件數量(不檢查任何郵件標記)。 – Ivar

+0

例如,我如何獲取收件箱中未設置「已刪除」標誌的電子郵件的郵件數量? – jaffa

+0

可能最快的方法是使用IMAP搜索。您可以搜索「UNDELETED」消息。 UNDELETED搜索鍵 - 沒有設置\ Deleted標誌的消息。在RFC 3501 6.4.4中定義。 – Ivar

回答

0

正如Ivar在他的評論中提到的,您可以使用UNDELETED在郵箱中搜索郵件。但是,我發現「NOT DELETED」搜索標誌在我一直使用的IMAP庫上更好地工作。