我对在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中收到的电子邮件,两者都有相同的结果。
建议非常欢迎。
答案 0 :(得分:1)
为什么不将这段代码分成两个对象。
AlternateView alternate = AlternateView.CreateAlternateViewFromString(body, mimeType);
message.AlternateViews.Add(alternate);
在第二行中放置一个断点,看看备用对象中有什么。也许这可以让您更深入地了解代码中的内容。
答案 1 :(得分:0)
您无法使用两个不同的正文设置邮件。由于其中一个部分是HTML,您需要将所有邮件视为HTML,只需正常附加明文 - 由于明文内部没有HTML编码,因此文本将显示为纯文本。