2010-11-15 49 views
6

我正在創建一個通過如何在AlternateView上設置編碼

using (var streamWriter = new StreamWriter(fooFileName, false, Encoding.UTF8)) 
{ 
    streamWriter.Write(fooMessage); 
} 
xzxx

的郵箱現在我正在使用

var mailMessage = new System.Net.Mail.MailMessage 
{ 
    From = fooSender, 
    To = 
    { 
     fooRecipient 
    }, 
    Subject = fooSubject, 
    SubjectEncoding = Encoding.UTF8, 
    BodyEncoding = Encoding.UTF8 
}; 
// fooMediaType can be 
// - System.Net.Mime.MediaTypeNames.Text.Html 
// - System.Net.Mime.MediaTypeNames.Text.Plain 
var alternateView = new System.Net.Mail.AlternateView(fooFileName, fooMediaType); 
mailMessage.AlternateViews.Add(alternateView); 

xxx39如果我正在使用非變音符號,一切正常,但是我只要我在我的alternateView中使用變音符號,它們會被破壞。

那麼如何在alternateView上設置某種編碼,一切正常?

回答

13
var alternateView = new AlternateView(fooFileName, fooMediaType) 
{ 
     ContentType = 
     { 
      CharSet = Encoding.UTF8.WebName 
     } 
}; 
+1

非常有幫助!使用'Encoding.UTF8.HeaderName'可能會更好,因爲charset參數將被添加到Content-Type頭。在這種情況下,Encoding.UTF8.WebName和Encoding.UTF8.HeaderName都返回相同的值utf-8,所以它並不重要。 – 2013-04-25 14:45:27