如何在AlternateView上设置编码

And*_*air 7 c# .net-3.5

我正在创建一个mailBody

using (var streamWriter = new StreamWriter(fooFileName, false, Encoding.UTF8))
{
    streamWriter.Write(fooMessage);
}
Run Code Online (Sandbox Code Playgroud)

现在我正在使用这个文件

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);
Run Code Online (Sandbox Code Playgroud)

如果我使用非变音符号,一切正常,但一旦我在我的使用变音符号alternateView,它们就会被破坏.

那么如何在alternateView上设置某种编码,一切正常呢?

And*_*air 16

 var alternateView = new AlternateView(fooFileName, fooMediaType)
 {
      ContentType =
      {
           CharSet = Encoding.UTF8.WebName
      }
 };
Run Code Online (Sandbox Code Playgroud)

  • 很有帮助!使用 `Encoding.UTF8.HeaderName` 可能更好,因为字符集参数将被添加到 Content-Type 标头中。在这种情况下,`Encoding.UTF8.WebName` 和 `Encoding.UTF8.HeaderName` 都返回相同的值 `utf-8`,所以这并不重要。 (2认同)