【发布时间】:2013-04-21 18:03:12
【问题描述】:
我有一个客户端接收到的电子邮件编码不正确。我正在使用 System.Net.Mail 类并将正文编码设置为 UTF-8。我已经做了一些阅读,因为我必须将电子邮件的正文设置为将数据编码为 UTF-8 字节数组的字符串,因为我必须将其转换回 UTF- 16.对吗?
当我发送时: Il s'agit d'un message de test pour déterminer comment le système va gérer les messages envoyés à l'aide des caractères français。 祝你好运。
他们看到: *Il s'agit d'un message de test pour déterminer comment le système va gérer les messages envoyés à l'aide des caractères français.
Merci et bonne journée.*
我在电子邮件上尝试了不同的编码,但我真的怀疑客户端错误地解码了电子邮件,因为我的电子邮件客户端正确显示了这一点。我错过了什么吗?还有什么可以做的吗?
代码如下
SmtpMailService.SendMail(string.Empty, toAddress, "emailaddress@emai.com", "", subject, sb.ToString(), false);
public static bool SendMail(string fromAddress, string toAddress, string ccAddress, string bccAddress, string subject, string body, bool isHtmlBody)
{
if (String.IsNullOrEmpty(toAddress)) return false;
var toMailAddress = new MailAddress(toAddress);
var fromMailAddress = new MailAddress(String.IsNullOrEmpty(fromAddress) ? DefaultFromAddress : fromAddress);
var mailMessage = new MailMessage(fromMailAddress, toMailAddress);
if (!String.IsNullOrEmpty(ccAddress))
{
mailMessage.CC.Add(new MailAddress(ccAddress));
}
if (!String.IsNullOrEmpty(bccAddress))
{
mailMessage.Bcc.Add(new MailAddress(bccAddress));
}
if (!string.IsNullOrEmpty(fromAddress)) mailMessage.Headers.Add("Reply-To", fromAddress);
mailMessage.Subject = subject;
mailMessage.IsBodyHtml = isHtmlBody;
mailMessage.Body = body;
mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
var enableSslCfg = ConfigurationManager.AppSettings["Email.Ssl"];
var enableSsl = string.IsNullOrEmpty(enableSslCfg) || bool.Parse(enableSslCfg);
var client = new SmtpClient {EnableSsl = enableSsl};
client.Send(mailMessage);
return true;
}
【问题讨论】:
-
Am I missing something?可能会显示您的代码? -
确实没有任何代码可以显示,这是一个抽象的问题,但我还是会添加它
-
body传入此方法时是 UTF8 编码的字符串吗? -
这是我的理解,我引用“C#中的字符串总是UTF-16,没有办法“转换”它。”
-
@RobA:是的。除了将您的正文和主题编码设置为 utf-8 之外,您无能为力。如果我是你,我会要求你的客户更改他们的电子邮件软件。
标签: c# .net email encoding utf-8