1

我正在尝试使用 AE.Net.Mail 获取电子邮件的纯文本或 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;
      }
   }
4

4 回答 4

6

我用这种方法解决了这个问题:

首先创建一个类:

    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,否则正文格式为普通格式

于 2012-11-01T10:44:17.580 回答
2

Body = e.Value.AlternateViews.GetHtmlView().Body,

于 2014-11-04T13:28:42.260 回答
0

如果您MailMessage是其中System.Net.Mail一个,您可以从Body属性中获取消息正文。根据IsBodyHtml属性,它可以是 HTML 或纯文本。该AlternateViews属性还可以包含消息正文的替代形式。

于 2012-06-02T21:32:13.780 回答
0

您必须仅将标头设置为false

邮件样本

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

                myM.Date = item.Date;

                myM.Body = item.Body;
于 2012-07-01T12:38:46.860 回答