2015-10-26 90 views
0

对于在ASP.NET中发送多部分电子邮件的问题,我很困惑。我正在使用我确定曾经工作过的代码,但收到的电子邮件似乎没有任何内容。在ASP.NET中使用System.Net.Mail发送多部分电子邮件 - 收到的电子邮件没有正文

代码的键位是这样的:

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的任何其他属性,我使用标准System.Net.Mail.SmtpClient使用之前多次使用过的Google凭据发送。

当电子邮件到达时,它看起来完全是空的。

如果我用以下(没有其他更改)替换上述两行,那么HTML电子邮件到达正确。

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

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

建议非常欢迎。

+0

您显示的代码没有问题。也许它的另一块代码有问题。你能提供一个完整的例子吗?另外,在接收端,你可以以文本的形式打开邮件(将邮件视为MIME邮件)并查看它是否包含这些实体? –

回答

1

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

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

在第二行放置一个断点,看看备用对象中有什么。也许这可能会让你更深入地了解代码中发生了什么。

0

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

相关问题