2010-11-15 12 views
6

Estoy creando un cuerpo del correo a través de¿Cómo se configura la codificación en AlternateView

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

ahora estoy consumiendo este archivo con

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

Si estoy usando no diéresis, funciona todo bien, pero tan pronto como estoy usando umlauts en mi alternateView, se rompen.

Entonces, ¿cómo puedo establecer algún tipo de codificación en la vista alternativa que todo está funcionando?

Respuesta

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

Muy útil! Podría ser mejor usar 'Encoding.UTF8.HeaderName' porque el parámetro charset se agregará al encabezado Content-Type. En este caso, 'Encoding.UTF8.WebName' y' Encoding.UTF8.HeaderName' devuelven el mismo valor 'utf-8', por lo que realmente no importa. –

Cuestiones relacionadas