如何以richtext格式向Outlook发送电子邮件?

通过分配text / html内容类型字符串,以HTML格式发送电子邮件(到Outlook)非常有用:

using (MailMessage message = new MailMessage()) { message.From = new MailAddress("--@---.com"); message.ReplyTo = new MailAddress("--@---.com"); message.To.Add(new MailAddress("---@---.com")); message.Subject = "This subject"; message.Body = "This content is in plain text"; message.IsBodyHtml = false; string bodyHtml = "

This is the HTML content.

"; 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文件中创建您的richtext(格式化为TNEF规则)。

然而,并非全部。 Outlook使用特殊版本的压缩RTF,因此,在将其添加到winmail.dat文件之前,还需要压缩RTF。

最重要的是,这很难做到,除非客户真的需要这个function,否则我会重新考虑它。

这不是你可以用.NET中的几行代码做的事情。

您还可以通过在日历视图之前添加其他备用视图来实现此目的,如下所示:

 var body = AlternateView.CreateAlternateViewFromString(bodyHtml, new System.Net.Mime.ContentType("text/html")); mailMessage.AlternateViews.Add(body); 

这对我有用..

 public void sendUsersMail(string recipientMailId, string ccMailList, string body, string subject) { try { MailMessage Msg = new MailMessage(); Msg.From = new MailAddress("norepl@xyz.com", "Tracker Tool"); Msg.To.Add(recipientMailId); if (ccMailList != "") Msg.CC.Add(ccMailList); Msg.Subject = subject; var AltBody = AlternateView.CreateAlternateViewFromString(body, new System.Net.Mime.ContentType("text/html")); Msg.AlternateViews.Add(AltBody); Msg.IsBodyHtml = true; SmtpClient smtp = new SmtpClient("mail.xyz.com"); smtp.Send(Msg); smtp.Dispose(); } catch (Exception ex) { } }