2010-11-15 12 views
6

Tworzę mailBody poprzezJak ustawić kodowanie na AlternateView

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

teraz jestem zużywa ten plik

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

Jeśli używam non-przegłosów, wszystko działa W porządku, ale jak tylko używam umlautów w moim alternateView, ulegają uszkodzeniu.

Jak ustawić kodowanie w alternatywnym widoku, aby wszystko działało?

Odpowiedz

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

Bardzo pomocna! Lepiej byłoby użyć 'Encoding.UTF8.HeaderName', ponieważ parametr charset zostanie dodany do nagłówka Content-Type. W tym przypadku 'Encoding.UTF8.WebName' i' Encoding.UTF8.HeaderName' oba zwracają tę samą wartość 'utf-8', więc nie ma to znaczenia. –