我有一个使用c#和System.Net.Mail发送HTML电子邮件的程序。大多数电子邮件都是正确收到的,但有些收件人正在报告收到的电子邮件对我来说就像编码一样。他们报告说,通过Outlook发送给用户的HTML电子邮件看起来是正确的。
下面是我使用的代码,我添加了 “mm.BodyEncoding = System.Text.Encoding.UTF8;”尝试修复它,我之前根本没有设置这个值,我认为默认为ASCII编码。这很难调试,因为我无法重新创建错误。
public List<string> Send()
{
List<string> Errors = new List<string>();
try
{
MailMessage mm = new MailMessage();
if (HTMLBody)
{
mm.IsBodyHtml = true;
mm.BodyEncoding = System.Text.Encoding.UTF8;
}
if (ReplyTo != "")
{
mm.ReplyToList.Add(ReplyTo);
}
mm.Body = this.Body;
mm.Subject = this.Subject;
mm.From = new System.Net.Mail.MailAddress(this.Sender);
foreach (string address in this.Recipients.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
{
try
{
mm.To.Add(address);
}
catch (FormatException)
{
Errors.Add("Invalid Email Address Format:" + address);
}
}
foreach (string address in BlindCC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries))
{
try
{
mm.Bcc.Add(address);
}
catch (FormatException)
{
Errors.Add("Invalid Email Address Format:" + address);
}
}
SmtpClient smtp = new SmtpClient(SMTPServer);
foreach (string Attach in Attachments)
{
mm.Attachments.Add(new Attachment(Attach));
}
try
{
smtp.Send(mm);
}
catch (SmtpException ex)
{
Errors.Add(ex.Message);
}
}
catch (Exception ex)
{
Errors.Add(ex.ToString());
}
return Errors;
}
抱怨的收件人得到的内容如下:
主题:2011年1月21日每周更新 内容类型:text / html;字符集= “UTF-8” Content-Transfer-Encoding:base64
致:未披露的收件人:;
PGJhc2UgaHJlZj0iaHR0cDovL3d3dy5tdXR1YWxtZWQuY29tL2VtYWlscy8iIC8 + PGh0bWw + PCEtLSBJbnN0YW5jZUJlZ2luIHRlbXBsYXRlPSIvVGVtcGxhdGVzL3Rl bXBsYXRlLmR3dCIgY29kZU91dHNpZGVIVE1MSXNMb2NrZWQ9ImZhbHNlIiAtLT4N CjxoZWFkPg0KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50