Ответ 1
.net поддерживает только символы ASCII. Я не верю, что он поддерживает расширенные символы ASCII (в том числе акцентированный e).
Мы столкнулись с теми же проблемами, когда пользователи пытались использовать датский символ для a/e.
Метод SmtpClient.Send() выдает это исключение, когда я пытаюсь отправить электронное письмо на адрес, содержащий подчеркнутый символ (é):
System.Net.Mail.SmtpException: клиент или сервер настроены только для адресов электронной почты с локальными частями ASCII: lé[email protected]
в System.Net.Mail.MailAddress.GetAddress (логический allowUnicode)
в System.Net.Mail.SmtpClient.ValidateUnicodeRequirement(MailMessage...)
в System.Net.Mail.SmtpClient.Send (сообщение MailMessage)
Формулировка сообщения заставляет меня думать, что может быть настройка, которую я могу активировать, чтобы сделать эту работу, хотя я ничего не нашел по этому вопросу.
Я пробовал несколько SMTP-серверов, в том числе Gmail. Вот соответствующие биты для воспроизведения:
Код
var msg = new MailMessage();
msg.Subject = "Test";
msg.From = new MailAddress("[email protected]");
msg.To.Add(new MailAddress("lé[email protected]"));
new SmtpClient().Send(msg);
app.config
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com" port="587" userName="[email protected]" password="password" enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
.net поддерживает только символы ASCII. Я не верю, что он поддерживает расширенные символы ASCII (в том числе акцентированный e).
Мы столкнулись с теми же проблемами, когда пользователи пытались использовать датский символ для a/e.
Если для свойства DeliveryFormat вашего экземпляра SmtpClient задано значение SmtpDeliveryFormat.SevenBit
(по умолчанию), вам необходимо убедиться, что ваш SMTP-шлюз отвечает SMTPUTF8 при отправке EHLO через .NET во время попытки отправки электронной почты. SmtpClient использует это, чтобы определить, способен ли шлюз поддерживать UTF8.
Если DeliveryFormat - SmtpDeliveryFormat.International
, вы сможете отправлять независимо.
Поздний ответ, но я решил это, указав кодировку следующим образом:
var mailMessage = new MailMessage
{
From = new MailAddress("[email protected]", "Test User", Encoding.UTF8)
}
В моем случае сервер вызывал ошибку.