使用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);

该怎么办?

使用c#发送邮件时使用AlternateView和čćžšđ

根据以下问题

  • 如何设置编码在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之前,您已经更新了您的问题,无论如何都有带编码参数的构造函数。