如何在AlternateView上设置编码

8
我正在创建一封电子邮件正文,使用以下代码:

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

如果我使用非umlauts字符,一切都正常,但是一旦我在我的alternateView中使用umlauts字符,它们就会出现问题。
那么我该如何对alternateView进行编码以使一切正常运行?
1个回答

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

2
非常有帮助!最好使用 Encoding.UTF8.HeaderName,因为字符集参数将添加到 Content-Type 标头中。在这种情况下,Encoding.UTF8.WebNameEncoding.UTF8.HeaderName 都返回相同的值 utf-8,所以并不重要。 - Marc Selman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接