2010-03-22 46 views
1

我試圖用InterIMAP標記讀取(/ SEEN)的電子郵件,但這不起作用。我用調試器遍歷代碼,發現郵件服務器的響應是「IMAP0078確定存儲被只讀郵箱忽略。」,這幾乎告訴我爲什麼它不起作用。但它看起來像沒有辦法告訴InterIMAP以讀寫方式打開連接。如果我使用Thunderbird之類的東西,我可以將消息設置爲已讀。無法標記使用InterIMAP讀取的電子郵件,文件夾爲只讀

有誰知道我應該如何使用InterIMAP來實現我想要的,或者如何更改源代碼,以便能夠將消息標記爲已讀?

回答

0

我是能夠解決的情況有以下變化Imap.cs

public void MarkMessageAsRead(IMAPMessage msg) 
{ 
    string cmd = "UID STORE {0} +FLAGS (\\Seen)\r\n"; 
    ArrayList result = new ArrayList(); 
    SendAndReceive(String.Format(cmd, msg.Uid), ref result); 
    if (result[0].ToString().ToLower().Contains("ok")) 
     msg.Flags.New = false; 
} 

改爲

public void MarkMessageAsRead(IMAPMessage msg) 
    { 
     msg.Folder.Select(); 
     string cmd = "UID STORE {0} +FLAGS (\\Seen)\r\n"; 
     ArrayList result = new ArrayList(); 
     SendAndReceive(String.Format(cmd, msg.Uid), ref result); 
     if (result[0].ToString().ToLower().Contains("ok")) 
      msg.Flags.New = false; 
     msg.Folder.Examine(); 
    } 

不知道這是要解決我的問題最徹底的方法,但它的有總比沒有好。

+2

看起來問題的原因是使用「EXAMINE」命令而不是「SELECT」命令打開郵箱(=文件夾)。這些IMAP命令非常相似 - 主要區別在於「EXAMINE」以只讀模式打開文件夾。我對InterIMAP不熟悉,但如果您在調用MarkMessagesAsRead方法之前能夠使用「SELECT」而不是「EXAMINE」,則不再需要此修復。 – 2010-03-24 10:46:50

0

上一頁下一頁最後一頁IMAP GMAIL!

public void DeleteMail(IMAPMessage msg) 
    { 
     msg.Folder.Select(); 
     string cmd = "UID STORE {0} +FLAGS (\\Deleted \\Seen)\r\n"; 
     ArrayList result = new ArrayList(); 
     SendAndReceive(String.Format(cmd, msg.Uid), ref result); 

     int countResult = result.Count - 1; 

     while (countResult >= 0) 
     { 
      if (result[countResult].ToString().ToLower().Contains("ok")) 
      { 
       msg.Flags.New = false; 
       msg.Flags.Deleted = true; 

       string cmd2 = "EXPUNGE\r\n"; 
       ArrayList result2 = new ArrayList(); 
       SendAndReceive(String.Format(cmd2, msg.Uid), ref result2); 

       if (result2[0].ToString().ToLower().Contains("ok")) 
       { 
        //Deu certo!! 
        msg.Folder.Examine(); 
       } 

      } 

      countResult--; 
     } 
    } 
+1

歡迎來到StackOverflow!大多數SO用戶通常使用和理解的語言是英語。因此,請嘗試用英文解釋您的答案,以便對非西班牙語(?)用戶也有用。 – 2016-03-23 01:44:16

相關問題