2013-06-19 128 views

回答

4

利用圖書館http://mailsystem.codeplex.com/

來源:http://mailsystem.codeplex.com/discussions/269058

添加參考:activeup.net.common,activeup.net.imap4,activeup.net.mail

代碼:

 Imap4Client imap = new Imap4Client(); 
     imap.ConnectSsl("imap.gmail.com", 993); 
     imap.Login("[email protected]", "xxxxxxx"); 

     imap.Command("capability"); 

     Mailbox inbox = imap.SelectMailbox("inbox"); 
     int[] ids = inbox.Search("UNSEEN"); 
     if (ids.Length > 0) 
     { 
      ActiveUp.Net.Mail.Message msg_first = inbox.Fetch.MessageObject(ids[0]); 

      //ignore this gmail_data stuff // undefined in this scope // checking to make sure it's a "new" unread msg 
      //if (gmail_data != msg_first.Date.ToString()) 
      //{ 
       // gmail_data = msg_first.Date.ToString(); 

       XElement xmail = new XElement("gmail", 
        new XAttribute("count", ids.Length.ToString()), 
        new XAttribute("modified", msg_first.Date.ToString()) 
       ); 

       string name = "", address = "", from = ""; 
       Regex reg_name = new Regex("\"[^\"]+"); 
       Regex reg_address = new Regex("<[^>]+"); 

       ActiveUp.Net.Mail.Message msg = null; 

       for (var i = 0; i < ids.Length; i++) 
       { 
        msg = inbox.Fetch.MessageObject(ids[i]); 

        from = msg.HeaderFields["from"]; 
        name = reg_name.Match(from).Value.Replace("\"", ""); 
        address = reg_address.Match(from).Value.Replace("<", ""); 

        xmail.Add(new XElement("entry", 
         new XAttribute("id", msg.MessageId), 
         new XAttribute("modified", msg.Date.ToString()), 
         new XAttribute("name", name), 
         new XAttribute("address", address), 
         new XElement("subject", msg.Subject), 
         new XElement("body-text", msg.BodyText.TextStripped), 
         new XElement("body-html", msg.BodyHtml.Text) 
        )); 
        //mark as unread 
        var flags = new FlagCollection(); 
        flags.Add("Seen"); 
        inbox.RemoveFlags(ids[i], flags); 
       } 


       File.WriteAllText("gmail.xml", xmail.ToString()); 


      } 
     } 
+1

您可能想要將示例代碼剝離到真正相關的部分。 RemoveFlags()是訣竅的方法。其餘的令人眼花繚亂。 – Lars

相關問題