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

        

.net仅支持ASCII字符。 我不相信它支持扩展的ASCII字符(包括有问题的重音e)。

http://www.asciitable.com/

我们遇到了与试图使用丹麦字符的用户相同的问题。

如果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) } 

在我的情况下,服务器导致错误。