首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送html电子邮件消息和plainText作为替代

发送html电子邮件消息和plainText作为替代
EN

Stack Overflow用户
提问于 2016-12-08 13:23:36
回答 2查看 3.2K关注 0票数 2
代码语言:javascript
复制
    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);
    }

当查看gmail收到的信息时,我接下来会看到:

代码语言:javascript
复制
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--

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

代码语言:javascript
复制
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

PGgxPlZPREE8L2gxPg==

还有其他的MailMessage属性我错过了吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-08 14:42:10

当您使用AlternateViews时,Body将被期望为text/plain,而AlternateViews将提供不同的内容类型。来自文档(https://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.alternateviews.aspx):

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

票数 6
EN

Stack Overflow用户

发布于 2016-12-08 14:39:47

答案写在这篇文章中:GMail displays plain text email instead HTML

尝试切换消息部分的顺序,将HTML部分放在纯文本部分之后。它可能有用:)。 注意:我现在不记得我在哪里读到了这篇文章(或者如果我确实读过),但是切换可能有帮助的原因是因为我认为消息的首选部分可能是最后一部分。 更新:我找到了一个地方,它说多个部分的MIME消息中的部分应该是增加偏好的顺序--在这里,第7.2.3节,从第三到最后一段开始。

在添加text/html之后,gmail将显示text/plain内容。尽管Microsoft确实显示了消息的html版本,但它并不介意添加版本的顺序。

代码语言:javascript
复制
AlternateView plainView = AlternateView.CreateAlternateViewFromString("test content", Encoding.UTF8, "text/plain");
message.AlternateViews.Add(plainView);

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(htmlContent, Encoding.UTF8, "text/html");
message.AlternateViews.Add(htmlView);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41040571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档