我在我的应用程序中安装了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>
非常感谢! :)
答案 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保存。