![](/img/trans.png)
[英]Sending an email via contact form with System.Net.Mail Asp.Net MVC C#
[英]Sending multipart email in ASP.NET with System.Net.Mail - received email has no body
我对在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
,主题为from和to。 我没有设置MailMessage
任何其他属性,而是使用以前使用过多次的Google凭据与标准System.Net.Mail.SmtpClient进行发送。
当电子邮件到达时,它似乎完全是空的。
如果我将以上两行替换为以下内容(无其他更改),则HTML电子邮件会正确到达。
message.Body = htmlBody;
message.IsBodyHtml = true;
那么,我的电子邮件为空的原因可能是什么? 我曾尝试将HTML简化为一个用<b>
标记包裹的单词,因此它与主体内容无关,而且正如我所说,我之前使用过类似的代码很多次而没有问题。 我已经在GMail和Office 365中测试了电子邮件的接收,两者的结果相同。
建议非常欢迎。
为什么不将这段代码分成两个对象。
AlternateView alternate = AlternateView.CreateAlternateViewFromString(body, mimeType);
message.AlternateViews.Add(alternate);
在第二行中放置一个断点,然后查看备用对象中的内容。 也许这可以使您对代码中发生的事情有更多的了解。
您不能将邮件设置为两个不同的正文。 由于其中一部分是HTML,因此您需要将所有邮件都视为HTML,只是正常地添加纯文本-由于纯文本内部没有HTML编码,因此文本将显示为纯文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.