2012-06-02 60 views
1

我想使用AE.Net.Mail獲取純文本或HTML文本的電子郵件。 我找不到任何文檔。如何使用AE.Net.Mail獲取PlainText或Html文本?

using (Pop3Client pop3 = new AE.Net.Mail.Pop3Client("pop3Server", "login", "pwd", 995, true)) 
{ 
    for (var i = pop3.GetMessageCount() - 1; i >= 0; i--) 
    { 
     MailMessage Msg = pop3.GetMessage(i); 
     string HtmlText = Msg.?????? 
     string PlainText = Msg.??????     
    } 
} 

編輯:我發現這個解決方案

IList<Attachment> iList; 
    string HtmlText = "", PlainText = ""; 

    for (var i = pop3.GetMessageCount() - 1; i >= 0; i--) 
    { 
     MailMessage msg = pop3.GetMessage(i); 
     TextBody = msg.Body; 
     iList = msg.AlternateViews as IList<Attachment>; 
     if (iList.Count == 0) iList = msg.Attachments as IList<Attachment>; 
     if (iList.Count > 0) 
     { 
      TextBody = iList[0].Body; 
      HtmlBody = iList[1].Body; 
     } 
    } 

回答

6

我解決了這個問題,這個方法:

Firt創建一個類:

class BodyContent 
    { 
    public string ContentType { get; set; } 
    public string Body { get; set; } 
    } 

比:

List<BodyContent> bodies = new List<BodyContent>(); 
    foreach (AE.Net.Mail.Attachment item in mail.AlternateViews) 
    { 
    bodies.Add(new BodyContent 
    { 
     ContentType = item.ContentType, 
     Body = item.Body 
    }); 
    } 

,並檢查了 「text/html的」:

string body=""; 
     BodyContent bodyTemp= bodies.Find(x => x.ContentType == "text/html"); 
     if (bodyTemp== null) 
     body = mail.Body; 
     else 
     body = bodyTemp.Body; 

如果有 「text/html的」,人體的格式HTML別人身體的格式的純

0

如果您MailMessageSystem.Net.Mail一個,你可以從Body財產得到的消息體。它可以是HTML或純文本,具體取決於IsBodyHtml屬性。 AlternateViews屬性也可能包含郵件正文的其他形式。

+0

在AE.Net.Mail中,沒有'IsBodyHtml'屬性。對於'Body'屬性中的所有消息,我都有純文本的消息。 對於一個消息,存在2'AlternateViews': [0]與'ContentType' 「texte /純」 [1]與'ContentType' 「texte/HTML」 對於其他消息沒有'AlternateViews'但2'Attachements' 對於其他消息,沒有'AlternateView's並且沒有'Attachements'。'''''''''''''''''''' 我如何獲取html文本? – LeMoussel

+0

您可以從其「ContentType」爲「text/plain」''AlternateView'的HTML主體獲取;你可能需要從'ContentStream'中讀取它。 – Douglas

+0

AE.Net.Mail中的'AlternateView'沒有'ContentStream'方法! – LeMoussel

0

必須設置頭只

Mail Sample

foreach (var item in mm) 
      { 
       Email myM = new Email(); 

       myM.Date = item.Date; 

       myM.Body = item.Body; 
+0

我不認爲這回答了這個問題。標題僅意味着它只能提取電子郵件標題,例如從,到,主題,日期等。它不會下載正文內容或附件。 – angularsen

2

體= E .Value.AlternateViews.GetHtmlView()。Body,