【问题标题】:Sending multipart email in ASP.NET with System.Net.Mail - received email has no body使用 System.Net.Mail 在 ASP.NET 中发送多部分电子邮件 - 收到的电子邮件没有正文
【发布时间】:2016-01-26 05:00:19
【问题描述】:

我对在 ASP.NET 中发送多部分电子邮件的问题感到非常困惑。我正在使用我确信以前可以使用的代码,但收到的电子邮件似乎没有正文。

代码的关键位是这样的:

message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(plainBody, null, MediaTypeNames.Text.Plain));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html));

我可以验证 plainBody 是有效的文本,htmlBody 是有效的 HTML。除此之外,我正在创建一个非常简单的MailMessage 主题,从和到。我没有设置 MailMessage 的任何其他属性,而是使用我以前多次使用过的 Google 凭据使用标准 System.Net.Mail.SmtpClient 发送。

当电子邮件到达时,它似乎完全是空的。

如果我将以上两行替换为以下内容(没有其他更改),则 HTML 电子邮件正确到达。

message.Body = htmlBody;
message.IsBodyHtml = true;

那么,我的空电子邮件可能是什么原因造成的?我尝试将 HTML 简化为包含在 <b> 标记中的单个单词,因此它与正文内容无关,正如我所说,我之前多次使用过类似的代码,没有任何问题。我已经在 GMail 和 Office 365 中测试了电子邮件的接收,结果相同。

非常欢迎提出建议。

【问题讨论】:

  • 您显示的代码没有问题。也许它的另一段代码有问题。你能提供一个完整的例子吗?另外,在接收端,你能不能以文本形式打开邮件(以 MIME 邮件形式查看邮件),看看它是否包含正文?

标签: c# asp.net email system.net.mail mailmessage


【解决方案1】:

你为什么不把这段代码分成两个对象。

AlternateView alternate = AlternateView.CreateAlternateViewFromString(body, mimeType);
message.AlternateViews.Add(alternate);

在第二行放置一个断点,然后查看替代对象中的内容。也许这可能会让您更深入地了解代码中发生的事情。

【讨论】:

    【解决方案2】:

    您不能将邮件设置为两个不同的正文。由于其中一部分是 HTML,因此您需要将所有邮件视为 HTML,只需正常附加纯文本即可 - 由于纯文本内部没有 HTML 编码,因此文本将显示为纯文本。

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 1970-01-01
      • 2012-06-11
      • 2016-07-26
      相关资源
      最近更新 更多