【发布时间】:2018-05-16 14:00:59
【问题描述】:
我正在使用 System.Net.Mail.SmtpClient 发送电子邮件。问题是当我向 MailMessage 添加附件时,收到的电子邮件主题和附件文件名解码出错。
当主题或附件名称字符串仅包含一个特殊字符(如“ü”)时,解码失败,但如果它包含更多像“ÍŰÁÉÚŐÓÜÖíűáéúőóüö”,则解码正常。
重现问题的代码:
var message = new MailMessage();
message.From = new MailAddress("test@test.com", "test");
message.To.Add(new MailAddress("test@test.com", "test"));
message.Subject = "Teszt üzenet";
message.Body = "Teszt üzenet";
// if i remove the line below en/decoding is ok
message.Attachments.Add(new Attachment(@"document.pdf") { Name = "fájl.pdf" });
using (var smtp = new SmtpClient() {
DeliveryFormat = SmtpDeliveryFormat.International,
DeliveryMethod = SmtpDeliveryMethod.Network,
EnableSsl = Settings.UseSsl,
Host = Settings.Host,
Port = Settings.Port,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(Settings.Username, Settings.Password)
}) {
smtp.Send(message);
}
设置 message.SubjectEcoding 和其他似乎无关紧要。默认值是 UTF-8,无论如何我都会使用它。
我正在使用 gmail smtp 进行测试,这是 webapi 2 项目的一部分。
【问题讨论】:
-
这可能与 SMTP 服务器、接收服务器或邮件客户端有关。我使用您的代码(完全正确)发送到 mailtrap.io 邮箱,它工作正常。
-
它应该有助于转储 smtp 会话,例如 here
-
@gnud - 谢谢!这个 mailtrap.io 的东西很棒!我已经测试了通过他们的 smtp 发送邮件,然后转发到本地 Outlook 客户端并且编码正常,而具有 gmail smtp 设置的相同代码导致解码错误,所以这一定是一些 gmail 特定的东西。请添加您的评论作为答案,以便我将其标记为解决方案!
-
@max630 - 谢谢!这个日志记录很棒,我不知道有这样的东西存在