使用正确的编码发送电子邮件。 (Outlook 胡言乱语的希伯来语)
Sending Email with the right Encoding. (Outlook gibberish hebrew )
我要向两个地方发送 希伯来语电子邮件,一个是 Gmail,另一个是 Outlook。
问题:
Gmail 每次都工作正常(它们会自动检测编码)但 Outlook 显示 body 时乱码,如果我将显示编码从 Hebrew(Windows)
更改为 [=13],我可以修复它=](在 Outlook 中打开消息显示时)。
值得一提的是 headers 和主题都很好。
问题:我怎样才能 "tell" Outlook 或任何其他程序查看 Unicode(UTF-8)
编码的邮件?无需手动操作。
我尝试设置编码,char-set 什么都没有,但我可以让它工作。
代码相关:
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;
首先,HTML 对 HTML 正文中的所有 Unicode 字符进行编码是个好主意 - https://en.wikipedia.org/wiki/Character_encodings_in_HTML.
其次,请移植您创建的邮件的完整 MIME 源。
最后让它工作的是替代视图的配置,如下所示:
AlternateView view = System.Net.Mail.AlternateView.CreateAlternateViewFromString(msg.Body, Encoding.UTF8, "text/html");
msg.AlternateViews.Add(view);
如您所见,我已经设置了 MIME(就像我之前所做的那样),但我还将编码设置为 UTF-8,这解决了问题。
我要向两个地方发送 希伯来语电子邮件,一个是 Gmail,另一个是 Outlook。
问题:
Gmail 每次都工作正常(它们会自动检测编码)但 Outlook 显示 body 时乱码,如果我将显示编码从 Hebrew(Windows)
更改为 [=13],我可以修复它=](在 Outlook 中打开消息显示时)。
值得一提的是 headers 和主题都很好。
问题:我怎样才能 "tell" Outlook 或任何其他程序查看 Unicode(UTF-8)
编码的邮件?无需手动操作。
我尝试设置编码,char-set 什么都没有,但我可以让它工作。
代码相关:
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;
首先,HTML 对 HTML 正文中的所有 Unicode 字符进行编码是个好主意 - https://en.wikipedia.org/wiki/Character_encodings_in_HTML.
其次,请移植您创建的邮件的完整 MIME 源。
最后让它工作的是替代视图的配置,如下所示:
AlternateView view = System.Net.Mail.AlternateView.CreateAlternateViewFromString(msg.Body, Encoding.UTF8, "text/html");
msg.AlternateViews.Add(view);
如您所见,我已经设置了 MIME(就像我之前所做的那样),但我还将编码设置为 UTF-8,这解决了问题。