0

我在我的应用程序中安装了 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

4 回答 4

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

瞧……

于 2013-06-07T20:02:51.140 回答
4

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

于 2011-05-26T14:13:09.917 回答
2

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

于 2011-05-26T15:40:04.510 回答
-1

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

于 2015-09-24T05:30:44.360 回答