使用c#发送邮件时使用AlternateView和čćžšđ
本文关键字:AlternateView 使用 | 更新日期: 2023-09-27 18:10:03
MailMessage message = new MailMessage(email.From,
email.To,
email.Subject,
email.Body);
message.BodyEncoding = Encoding.GetEncoding("utf-8");
string body = "<!DOCTYPE HTML PUBLIC '"-//W3C//DTD HTML 4.0 Transitional//EN'">";
body += "<HTML><HEAD><META http-equiv=Content-Type content='"text/html; charset=utf-8'">";
body += "</HEAD><BODY><DIV>";
body += email.Body.Replace("'r'n", "<br />");
body += "</DIV></BODY></HTML>";
AlternateView plainView = AlternateView.CreateAlternateViewFromString(Regex.Replace(email.Body, @"<(.|'n)*?", string.Empty), null, "text/plain");
message.AlternateViews.Add(plainView);
ContentType mimeType = new ContentType("text/html");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(email.Body, mimeType);
message.AlternateViews.Add(htmlView);
电子邮件的地方。正文和电子邮件。主题例如为"čžćšđščžčžčšđš"
当我收到邮件时,主题是ok的,但主体是损坏的,如ÄžŠ' Ä '
问题在AlternateView.
:
ContentType mimeType = new ContentType("text/html");
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(email.Body, mimeType);
message.AlternateViews.Add(htmlView);
该怎么办?
根据以下问题
- 如何设置编码在AlternateView
答案是适当地设置备用视图的内容类型。您正在传递null
作为编码,请考虑传递UTF-8:
AlternateView plainView = AlternateView.CreateAlternateViewFromString(
Regex.Replace(email.Body, @"<(.|'n)*?", string.Empty),
Encoding.UTF8, "text/plain");
你在构造函数中使用null为AlternateView编码,将其替换为encoding . getencoding ("utf-8")
更新:在构造函数中使用null之前,您已经更新了您的问题,无论如何都有带编码参数的构造函数。