Поделиться через


Непрочитаемые символы в строке темы полученных сообщений электронной почты

Симптомы

Пользователь сообщает, что получатели сообщений электронной почты видят непрочитаемые или вязкие символы в строке темы.

Причина

Эта проблема возникает, если почтовое клиентское приложение, предназначенное для устаревшей версии Microsoft .NET Framework, использует класс System.Net.Mail.SmtpClient для отправки сообщений электронной почты, содержащих символы, отличные от ASCII, в строке темы. В более ранних версиях .NET Framework реализация SmtpClient неправильно обрабатывает символы, отличные от ASCII, в строке темы при подключении к SMTP-серверу, поддерживающем расширение SMTPUTF8. Вместо использования стандартной кодировки заголовков (RFC 2047) клиентское приложение отправляет необработанные байты UTF-8 в заголовке темы. Следовательно, почтовые клиенты, получающие затронутые сообщения, отображают нечитаемые или вязкие символы в строке темы.

Решение

Чтобы устранить эту проблему, используйте любой из следующих методов:

  • Обновление целевой версии .NET Framework в клиентском приложении (исправление на стороне клиента)

    Реализация SmtpClient в .NET Framework 4.8 и более поздних версиях корректно обрабатывает кодировку темы при подключении к серверам с поддержкой SMTPUTF8.

    Кроме того, обновите клиентское приложение, чтобы нацелиться на платформу Microsoft .NET.

  • Настройте разъем приема для сервера Exchange (обходной путь на стороне сервера)

    Замечание

    Это решение не относится к почтовым клиентским приложениям, которые подключаются к Exchange Online для отправки сообщений электронной почты.

    Если затронутое приложение использует известный набор IP-адресов при подключении к Microsoft Exchange Server, можно настроить выделенный соединитель получения на сервере Exchange, чтобы отключить расширение SMTPUTF8 для подключений, исходящих из этих IP-адресов.

    Чтобы настроить приемный разъем, выполните следующий командлет PowerShell в оболочке управления Exchange (EMS):

    Set-ReceiveConnector -Identity "<connector name or ID>" -SmtpUtf8Enabled $false -RemoteIPRanges <remote IP ranges>
    

    Например, можно использовать следующую команду:

    Set-ReceiveConnector -Identity "Client apps connector" -SmtpUtf8Enabled $false -RemoteIPRanges "192.168.21.0/24", "10.10.10.10", "2001:0DB8::CD3/60"