使用System.Net.Mail在ASP.NET中发送多部分电子邮件 - 收到的电子邮件没有正文

时间:2015-10-26 22:39:40

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

我对在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中收到的电子邮件,两者都有相同的结果。

建议非常欢迎。

2 个答案:

答案 0 :(得分:1)

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

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

在第二行中放置一个断点,看看备用对象中有什么。也许这可以让您更深入地了解代码中的内容。

答案 1 :(得分:0)

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