SmtpClient
、MailMessage
和MailAddress
类,我无法发送至如åbc.def@domain.se这样的电子邮件地址。我收到以下显示错误/异常:
在邮件头中找到一个无效字符:'å'。
---------------------------发送电子邮件时出错----------------------------
System.Net.Mail.SmtpException: 客户端或服务器只配置了 ASCII 本地部分的电子邮件地址:åbc.def@domain.se。
at System.Net.Mail.MailAddress.GetUser(Boolean allowUnicode)
at System.Net.Mail.MailAddress.GetAddress(Boolean allowUnicode)
at System.Net.Mail.MailAddress.Encode(Int32 charsConsumed, Boolean allowUnicode)
at System.Net.Mail.MailAddressCollection.Encode(Int32 charsConsumed, Boolean allowUnicode) at System.Net.Mail.Message.PrepareHeaders(Boolean sendEnvelope, Boolean allowUnicode) at System.Net.Mail.Message.Send(BaseWriter writer, Boolean sendEnvelope, Boolean allowUnicode) at System.Net.Mail.SmtpClient.Send(MailMessage message)
我的主题/正文中的这些字符是可以的,但不适用于电子邮件地址。
我尝试设置SmtpClient.DeliveryMethod = SmtpDeliveryFormat.International
,或者MailMessage.HeadersEncoding = Encoding.Unicode
(或UTF8
),但似乎没有改变任何东西。这些是我们需要与之沟通的真实人员电子邮件地址,所以这是一个有点麻烦的问题。
我一直在查看.Net源代码,但真正没有收获。我找到了一个ServerSupportsEai
属性,谷歌告诉我EAI代表电子邮件地址国际化(https://www.rfc-editor.org/rfc/rfc5336),但这是否是我的代码的限制还是我正在通信的特定服务器不支持它,因为我正在使用测试服务器避免向不知情的瑞典人发送电子邮件,所以这还不太清楚!
有人能帮我澄清一下吗 - .Net支持这个吗?如果支持,我的客户端代码需要做什么来启用它?