我们有一个小型邮件Web服务,因为并非每个应用都可以访问SMTP服务器。现在今天晚上,Web服务无法发送邮件,因为接收邮件地址包含一些更复杂的字符,导致The client or server is only configured for E-mail addresses with ASCII local-parts
错误。
在Google搜索解决方案后,我发现您应该将DeliveryFormat
设置为International
。
我已经实现了这一点,但我仍然遇到同样的错误。添加手表还会告诉我smtp.IsUnicodeSupported
仍然是false
这是目前的代码:
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Subject = mailSubject;
mail.Body = mailBody;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.Normal;
mail.HeadersEncoding = Encoding.UTF8;
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.mydomain.net");
smtp.DeliveryFormat = SmtpDeliveryFormat.International;
smtp.Send(mail);
属性smtp.transport.ServerSupportsEai
也仍然为false,但此时似乎尚未建立与SMTP服务器的联系。
我还可以做些什么来强制SMTP客户端发送邮件? 它甚至可以在应用程序端解决吗?
答案 0 :(得分:1)
仅部分支持电子邮件地址中的非ASCII字符。
如果域部分包含国际字符,则可以将其转换为正确的punycode表示形式,但如果@ -sign左侧存在非ascii字符,则似乎不存在已建立的标准编码(实验性RFC 5355除外,它与现有的SMTP标准不兼容)。
答案 1 :(得分:1)
迟到的答案,但是,我通过指定这样的编码来解决这个问题:
var mailMessage = new MailMessage
{
From = new MailAddress("test@domain.co.zw", "Test User", Encoding.UTF8)
}