SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器
当我尝试将电子邮件发送到包含突出字符(é)的地址时, SmtpClient.Send()方法抛出此exception:
System.Net.Mail.SmtpException:仅为具有ASCII本地部分的电子邮件地址配置客户端或服务器:léo.xxx@example.com。
在System.Net.Mail.MailAddress.GetAddress(布尔allowUnicode)
在System.Net.Mail.SmtpClient.ValidateUnicodeRequirement(MailMessage …)
在System.Net.Mail.SmtpClient.Send(MailMessage消息)
消息的制定使我可能有一个设置,我可以激活,以使这项工作,虽然我没有找到任何关于这个主题。
我尝试了几种SMTP服务器,包括Gmail。 以下是repro的相关位:
码
var msg = new MailMessage(); msg.Subject = "Test"; msg.From = new MailAddress("xxx@gmail.com"); msg.To.Add(new MailAddress("léo.yyy@gmail.com")); new SmtpClient().Send(msg);
的app.config
如果SmtpClient实例的DeliveryFormat属性设置为SmtpDeliveryFormat.SevenBit
(默认值),那么在尝试发送电子邮件时,您需要确保SMTP网关在使用.NET发送ELHO时使用SMTPUTF8进行回复。 如果网关能够支持UTF8,SmtpClient使用它来计算。
如果DeliveryFormat是SmtpDeliveryFormat.International
,那么SmtpDeliveryFormat.International
都可以发送。
迟到的答案,但是,我通过指定这样的编码解决了这个问题:
var mailMessage = new MailMessage { From = new MailAddress("test@domain.co.zw", "Test User", Encoding.UTF8) }
在我的情况下,服务器导致错误。