发送 html 电子邮件和纯文本作为替代

bro*_*and 2 c# email system.net.mail

    using (MailMessage message = new MailMessage()) // using System.Net.Mail;
    {
      string mailFrom = "sender@email.si";
      string smtpServer = "smtp.server.net";

      message.From = new MailAddress(mailFrom);
      message.To.Add("xxx@gmail.com");
      message.Subject = "subject";
      message.SubjectEncoding = Encoding.UTF8;

      message.IsBodyHtml = true;
      message.Body = "<h1>VODA</h1>";
      message.BodyEncoding = Encoding.UTF8;

      AlternateView plainView = AlternateView.CreateAlternateViewFromString("test content", Encoding.UTF8, "text/plain");
      message.AlternateViews.Add(plainView);

      SmtpClient smtpClient = new SmtpClient(smtpServer);

      smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
      smtpClient.UseDefaultCredentials = false;
      smtpClient.Credentials = new System.Net.NetworkCredential("user", "pass");
      smtpClient.EnableSsl = true;
      smtpClient.Port = 587;
      smtpClient.Send(message);
    }
Run Code Online (Sandbox Code Playgroud)

在查看在 gmail 收到的内容时,我接下来会看到:

Subject: subject
Content-Type: multipart/alternative; boundary=--boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e
Message-Id: <20161208131903.36280C956C@in-1.mail.xxx.net>

----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

PGgxPlZPREE8L2gxPg==
----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

dGVzdCBjb250ZW50
----boundary_0_989afdbb-5fe4-4155-ba59-3d5ffdbb909e--
Run Code Online (Sandbox Code Playgroud)

为什么 System.Net.Mail.MailMessage 不设置text/html联系类型?

Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

PGgxPlZPREE8L2gxPg==
Run Code Online (Sandbox Code Playgroud)

我错过了任何其他 MailMessage 属性吗?

tpe*_*zek 5

当您使用AlternateViewsBody预计text/plainAlternateViews提供不同的内容类型。从文档(https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.alternateviews.aspx):

要将备用视图添加到 MailMessage 对象,请为该视图创建一个附件,然后将其添加到由 AlternateViews 返回的集合中。使用 Body 属性指定文本版本并使用 AlternateViews 集合指定具有其他 MIME 类型的视图。