使用正确的编码发送电子邮件。 (Outlook乱语希伯来语)

时间:2015-07-20 23:12:40

标签: c# .net email encoding outlook

我发送希伯来语电子邮件到两个地方,一个是Gmail,另一个是Outlook。

问题:

Gmail每次都正常运行(他们会自动检测到编码)但Outlook会以乱码显示正文,如果我将显示编码从Hebrew(Windows)更改为Unicode(UTF-8)(打开时),我可以修复它Outlook中的消息显示。

值得一提的是标题和主题都很好。

问题:我怎样才能告诉" Outlook或任何其他程序使用Unicode(UTF-8)编码查看邮件?无需手动完成。

我尝试设置编码,字符集和什么不是,但我可以让它工作。

相关代码:

public static void SendEmail(MailMessage msg )
{
    ContentType mimeType = new System.Net.Mime.ContentType("text/html");
    msg.AlternateViews.Add(System.Net.Mail.AlternateView.CreateAlternateViewFromString(msg.Body, mimeType));

    SmtpClient smtp = new SmtpClient
    {
        Host = "mailgw.netvision.net.il",
        Port = 25,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(uName,uPass)
    };

    smtp.Send(msg);
}

以下是我尝试使用编码的几个例子:

 msg.BodyEncoding = Encoding.ASCII;
 msg.BodyEncoding = Encoding.UTF8;
 msg.BodyTransferEncoding = TransferEncoding.SevenBit;

2 个答案:

答案 0 :(得分:1)

最后使其工作的是替代视图的配置,如下所示:

AlternateView view = System.Net.Mail.AlternateView.CreateAlternateViewFromString(msg.Body, Encoding.UTF8, "text/html");
msg.AlternateViews.Add(view);

正如你所看到我设置了MIME(就像我之前做的那样),但我也将编码设置为UTF-8,这解决了问题。

答案 1 :(得分:0)

首先,对HTML正文中的所有Unicode字符进行HTML编码是个好主意 - https://en.wikipedia.org/wiki/Character_encodings_in_HTML

其次,请移植您创建的邮件的完整MIME源。