【问题标题】:Sending Email with the right Encoding. (Outlook gibberish hebrew )使用正确的编码发送电子邮件。 (Outlook胡言乱语希伯来语)
【发布时间】:2015-07-21 19:12:34
【问题描述】:

我正在向两个地方发送希伯来语电子邮件,一个是 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;

【问题讨论】:

  • try to set the encoding, char-set 你到底是怎么设置的?

标签: c# .net email encoding outlook


【解决方案1】:

最后使它起作用的是替代视图的配置,如下所示:

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

如您所见,我已经设置了 MIME(就像我之前所做的那样),但我还将编码设置为 UTF-8,这样可以解决问题。

【讨论】:

    【解决方案2】:

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

    其次,请移植您创建的消息的完整 MIME 源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多