如何解决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 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>
非常感谢! :)
解决方法
确保您的模板另存为UTF8(新文件的默认值)。
,首先添加以下内容:
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;
}
瞧...
,设置MailMessage.BodyEncoding = Encoding.UTF8
。
您可能还需要设置SubjectEncoding
。
,确保将您设置主题的.cs文件(源代码)也保存在UTF8中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。