MvcMailer俄罗斯charset在身体问题

Evg*_*kiy 0 email asp.net-mvc mvcmailer

我在我的应用程序中安装了MVCMailer.但当我发送邮件与俄罗斯charset身体我得到这样的事情:

ÏðèâåòñòâóåìÂàñíàñàéòåå

好看,不是吗?:)

有关详细信息,可以显示IUserMailer.cs:

namespace photostorage.Mailers
{ 
    public interface IUserMailer
    {
        MailMessage Welcome(string userMail, string login, string password);
        MailMessage PasswordReset();
    }
}
Run Code Online (Sandbox Code Playgroud)

和UserMailer.cs:

       public virtual MailMessage Welcome(string userMail, string login, string password)
        {
            var mailMessage = new MailMessage{Subject = "????? ?????????? ?? FotoStorage.org"};

            mailMessage.To.Add(userMail);
            ViewBag.login = login;
            ViewBag.password = password;
            PopulateBody(mailMessage, viewName: "Welcome");

            return mailMessage;
        }
Run Code Online (Sandbox Code Playgroud)

_Layout.cshtml:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        @RenderBody()
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

和Welcome.cshtml

<div>
    <div><h1>???????????? ??? ?? ????? ......</h1></div>
    <div>
        <p>
            ??? ?????: @ViewBag.login
            ??? ??????: @ViewBag.password
        </p>
        <p>
            ?????????? ?????? ?? ???? ???? - .......
        </p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

非常感谢!:)

小智 6

首先添加以下内容:

  x.BodyEncoding = Encoding.UTF8;
  x.SubjectEncoding = Encoding.UTF8;
Run Code Online (Sandbox Code Playgroud)

然后将以下覆盖添加到从MailerBase派生的类中:

public override AlternateView PopulateHtmlPart(MailMessage mailMessage, string viewName, string masterName, Dictionary<string, string> linkedResources)
{
    var htmlPart = base.PopulateHtmlPart(mailMessage, viewName, masterName, linkedResources);
    htmlPart.ContentType.CharSet = mailMessage.BodyEncoding.HeaderName;
    return htmlPart;
}
Run Code Online (Sandbox Code Playgroud)

瞧...