2011-05-26 27 views
0

我有MVCMailer安裝在我的應用程序。但是,當我用俄語字符集正文中發送郵件,我得到這樣的:MvcMailer俄羅斯字體在身體問題

ÏðèâåòñòâóåìAAN IAñàéòå

好看,是不是? :)

有關詳細信息,可以顯示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

將'Welcome.cshtml'保存爲什麼編碼? – SLaks 2011-05-26 14:12:33

+0

你是對的:)我放下文件並重新創建 - 所有的作品都很好。做新的軟件,我會接受它 – 2011-05-26 15:39:11

+1

如果你通過nuget安裝了MVC Mailer,所以它將應用編碼爲ANSI而不是UTF-8的默認視圖:)只需重新創建它就可以修復它。 – Freshblood 2014-04-14 16:18:31

回答

2

確保您的模板保存爲UTF8(這應該是新文件的默認值)。

+0

如果我在主題編碼方面遇到麻煩,如果SubjectEncoding不能解決它,那麼怎麼辦? – Freshblood 2014-04-16 07:59:16

4

設置MailMessage.BodyEncoding = Encoding.UTF8
您可能還需要設置SubjectEncoding

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

瞧...

+0

實際上這只是對我有用的東西 – sanjuro 2014-06-06 20:59:34

+0

只要您的視圖不包含偏色,它就可以工作:D錯誤可以在Outlook中重現,但不在Gmail中重現,因爲Gmail始終會將內容轉換爲utf8。當消息作爲多部分發送時,Outlook依賴於ContentType Header,它必須添加到消息的每個部分。 – tomalone 2017-11-19 22:13:20

-1

確保您還cs文件(源代碼),您設置的主題以UTF8格式保存。

+0

那麼,爲什麼你-1我的答案?這是我遇到問題的原因。它的工作原理! – alvipeo 2016-01-11 00:05:39