MailMessage, отображаемое имя отправителя — «???????»

#c# #smtpclient #mailmessage

#c# #smtpclient #mailmessage

Вопрос:

Проблема: я получаю «???????» вместо отображаемого имени отправителя (отображаемое имя — текст utf8, также пробовал использовать System.Web.Mail.MailMessage, но получил тот же результат):

 var fromAddress = new MailAddress("from@mail.com", "Some UTF8 text");
    var toAddress = new MailAddress(toAddress);

    var client = new SmtpClient
    {
        Host = "smpt.server",
        Port = 465,
        EnableSsl = true,
        DeliveryMethod = SmtpDeliveryMethod.Network,
        UseDefaultCredentials = false,
        Credentials = new NetworkCredential(fromAddress.Address, "password"),
        Timeout = 5000
    };
    var message = new MailMessage(fromAddress, toAddress)
    {
        Subject = title,
        Body = messageStr,
        IsBodyHtml = true
    };
  

Комментарии:

1. Откуда вы получаете отображаемое имя? Поскольку вы знаете, что это UTF8, вы можете попытаться преобразовать его в юникод.

2. Поддерживает ли ваш SMTP-сервер Unicode? Класс MailAddress выполняет, согласно документации.

3. Я заметил странную вещь: когда я использую CDO.Message, перед отправкой электронной почты я попытался проверить адрес отправителя с помощью QuickWatch и увидел «»???? ?????????» <office@portal.ua >»

Ответ №1:

Вы пробовали менять конструктор?

  var fromAddress = new MailAddress("from@mail.com", "Some UTF8 text", System.Text.Encoding.UTF8);
  

Конструктор почтового адреса (строка, строка, кодировка)

Комментарии:

1. С той же страницы: «UTF8 является кодировкой по умолчанию, если не указано ни одно» .