通过分配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 = "<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没有检测到这一点,它会回归到纯文本 如何以富文本格式发送电子邮件?
答案 0 :(得分:9)
最重要的是,您无法使用System.Net.Mail轻松完成此操作。
Outlook中的富文本作为SMTP世界(Exchange外部)的winmail.dat文件发送。
winmail.dat文件是TNEF消息。因此,您需要在winmail.dat文件中创建richtext(格式化为TNEF规则)。
然而,并非全部。 Outlook使用特殊版本的压缩RTF,因此,在将其添加到winmail.dat文件之前,您还需要压缩RTF。
最重要的是,这很难做到,除非客户真的需要这个功能,否则我会重新考虑它。
这不是你可以用.NET中的几行代码做的事情。
答案 1 :(得分:1)
您还可以通过在日历视图之前添加其他备用视图来实现此目的,如下所示:
var body = AlternateView.CreateAlternateViewFromString(bodyHtml, new System.Net.Mime.ContentType("text/html"));
mailMessage.AlternateViews.Add(body);
答案 2 :(得分:0)
这对我有用..
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)
{
}
}