2010-11-15 5 views
6

Я создаю mailBody черезКак установить кодировку на AlternateView

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

теперь я потребляя этот файл с

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

Если я использую не-умляуты, все работает отлично, но как только я использую умлауты в моем 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', поэтому это не имеет большого значения. –

Смежные вопросы