通过分配 text/html 内容类型字符串以 HTML 格式发送电子邮件(到 Outlook)非常有效,如下所示:
using (MailMessage message = new MailMessage())
{
message.From = new MailAddress("[email protected]");
message.ReplyTo = new MailAddress("[email protected]");
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "This subject";
message.Body = "This content is in plain text";
message.IsBodyHtml = false;
string bodyHtml = "<p>This is the HTML <strong>content</strong>.</p>";
using (AlternateView altView = AlternateView.CreateAlternateViewFromString(bodyHtml,
new ContentType(MediaTypeNames.Text.Html)))
{
message.AlternateViews.Add(altView);
SmtpClient smtp = new SmtpClient(smtpAddress);
smtp.Send(message);
}
}
在 Outlook (2003) 中,电子邮件被正确识别为 HTML。
但如果我尝试富文本:
MediaTypeNames.RichText;
Outlook 不会检测到这一点,它会退回到纯文本。
如何发送富文本格式的电子邮件?
最重要的是,使用 System.Net.Mail 无法轻松完成此操作。
Outlook 中的富文本在 SMTP 世界(Exchange 外部)中作为 winmail.dat 文件发送。
winmail.dat 文件是 TNEF 邮件。因此,您需要在 winmail.dat 文件内创建富文本(格式为 TNEF 规则)。
然而,这还不是全部。 Outlook 使用特殊版本的压缩 RTF,因此,您还需要先压缩 RTF,然后再将其添加到 winmail.dat 文件中。
最重要的是,这很难做到,除非客户真的非常需要这个功能,否则我会重新考虑它。
这不是您可以在 .NET 中使用几行代码完成的事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)