Используя классы SmtpClient
, MailMessage
и MailAddress
, я не могу отправить адреса электронной почты, такие как å[email protected] Я получаю ошибку/исключения, как показано ниже:Не удается отправить электронные письма по адресам со скандинавскими символами
Недопустимый символ был найден в почтовом заголовке: 'å'.
--------------------------- Ошибка отправки электронной почты --------------- ------------ System.Net.Mail.SmtpException: клиент или сервер настроен только для адресов электронной почты с локальными частями ASCII : å[email protected]
в System.Net.Mail.MailAddress.GetUser (Boolean) allowUnicode
в System.Net.Mail.MailAddress.GetAddress (Boolean) allowUnicode
в System.Net.Mail.MailAddress.Encode (Int32 charsConsumed, булева allowUnicode)
на System.Net.Mail.MailAddressCollection.Encode (Int32 charsConsumed, булева allowUnicode) в System.Net.Mail.Message.PrepareHeaders (Boolean sendEnvelope, Логическое allowUnicode) в System.Net.Mail.Message.Send (BaseWriter писатель, Boolean sendEnvelope, Boolean allowUnicode) на System.Net.Mail.SmtpClient.Send (MailMessage сообщение)
Эти символы в моей теме/тело в порядке, но не в адресах электронной почты.
Я пробовал установить SmtpClient.DeliveryMethod = SmtpDeliveryFormat.International
, или MailMessage.HeadersEncoding = Encoding.Unicode
(или UTF8
), и он ничего не меняет. Это настоящие адреса электронной почты людей, с которыми нам нужно общаться, поэтому это немного проблема.
Я копаю исходный код .Net, но не получил нигде. Я отслеживал свойство ServerSupportsEai
, и Google сообщает мне, что EAI означает интернационализацию адресов электронной почты (https://tools.ietf.org/html/rfc5336), но это довольно неясно, является ли это ограничением в моем коде или если конкретный сервер, о котором я говорю, просто не поддерживает это. .. поскольку я использую тестовый сервер, чтобы не отправлять электронные письма не подозревающим шведским людям!
Может кто-нибудь помочь мне разобраться в этом - делает .Net это поддерживает, если да, то что, если что-нибудь должно сделать для моего кода клиента, чтобы включить его?
Я думаю, что проблема может быть не в коде .NET, а в конфигурации вашего почтового сервера. Можете ли вы попробовать использовать другой сервер? – Pikoh
(5336 заменен на 6531/2). Это средство требует, чтобы SMTP-сервер поддерживал SMTPUTF8, попробуйте с Gmail, который делает, если он работает на вашем сервере. –
Спасибо. После битвы с gmail «приложение не использует обновленную защиту и заблокировано». Я тестирую это, хотя я до сих пор не могу отправить реальному человеку очень вежливо –