MvcMailer俄罗斯charset在身体问题

时间:2011-05-26 14:10:21

标签: asp.net-mvc email mvcmailer

我在我的应用程序中安装了MVCMailer。但是当我发送带有俄语字符集的邮件时,我得到的结论是:

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

好看,不是吗? :)

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

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

和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;
        }

_Layout.cshtml:

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

和Welcome.cshtml

<div>
    <div><h1>Приветствуем Вас на сайте ......</h1></div>
    <div>
        <p>
            Ваш логин: @ViewBag.login
            Ваш пароль: @ViewBag.password
        </p>
        <p>
            Постоянная ссылка на Ваши фото - .......
        </p>
    </div>
</div>

非常感谢! :)

4 个答案:

答案 0 :(得分:6)

首先添加以下内容:

  x.BodyEncoding = Encoding.UTF8;
  x.SubjectEncoding = Encoding.UTF8;

然后将以下覆盖添加到从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;
}

...瞧

答案 1 :(得分:4)

设置MailMessage.BodyEncoding = Encoding.UTF8
您可能还需要设置SubjectEncoding

答案 2 :(得分:2)

确保您的模板保存为UTF8(应该是新文件的默认设置)。

答案 3 :(得分:-1)

确保您设置主题的.cs文件(源代码)以UTF8保存。