MailKit smtp.office365.com проблема с кодировкой специальных символов - PullRequest
0 голосов
/ 26 мая 2020

Во-первых, я не знаю, возникла ли моя проблема из-за неправильного использования Mailkit (это, кстати, отличная программа) или из-за неправильной настройки smtp.office365.com.

Версия MailKit: 2.6.0

Я пытаюсь отправить сообщение с этой строкой Test d'ênvoïe d'èmail avec des àccénts в теме и тексте.

Когда я использую учетную запись smtp.office365.com для отправки электронного письма, когда я получаю его в своем ящике office 365, тема в порядке, но тело выглядит так Test d'�nvo�e d'�mail avec des �cc�nts.

Я пытаюсь использовать другую учетную запись smtp.office365.com от другой компании, и когда я получил ее в своем ящике Office 365, тема и текст в порядке.

Я пытаюсь отправить то же электронное письмо с первая учетная запись smtp в почтовый ящик GMAIL. Тема и основной текст в порядке. электронное письмо довольно простое, и в нем нет ничего необычного. Этот код используется каждый день для отправки электронных писем из нашего программного обеспечения, и это первый раз, когда мы сталкиваемся с подобной проблемой с smtp. Что меня беспокоит, так это то, что это smtp office 365, такой же, как тот, который мы используем каждый день без каких-либо проблем.

--- EDIT По запросу @jstedfast вот необработанный MIME, сгенерированный MimeKit / MailKit

From: email@domain.com
Date: Tue, 26 May 2020 14:16:13 +0000
Subject: Test =?utf-8?b?ZCfDqm52b8OvZSBkJ8OobWFpbCBhdmVjIGRlcyDDoGNjw6ludHM=?=
Message-Id: <54G3D036QAU4.3G654QDV2MVS2@4b245b0f83f4>
To: some@email.com
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=-xjuWE0kh6/lmMc7JIcMJ3g=="

--=-xjuWE0kh6/lmMc7JIcMJ3g==
Content-Type: text/plain; charset=utf-8

Test d'ênvoïe d'èmail avec des àccénts ça, ~ $ #{][*µµ$£= +
--=-xjuWE0kh6/lmMc7JIcMJ3g==
Content-Type: text/html; charset=utf-8
Content-Id: <RUL3D036QAU4.Y7K3UPECLV0Q3@4b245b0f83f4>

Test d'ênvoïe d'èmail avec des àccénts ça, ~ $ #{][*µµ$£= +
--=-xjuWE0kh6/lmMc7JIcMJ3g==--

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Как объяснил jstedfast, решение этой проблемы idioti c состоит в том, чтобы добавить message.Prepare (EncodingConstraint.SevenBit); перед отправкой электронного письма.

Так что спасибо jstedfast за решение! Ты спас мне день.

0 голосов
/ 26 мая 2020

Как предлагает jdweng в своем комментарии, это может быть проблема со шрифтом в принимающем клиенте Outlook (другими словами, шрифт, используемый Outlook, не имеет глифов для ê, ï , è, à или é).

Поскольку вы не получаете 2 символа мусора, например �� (или À�) на символ, это говорит о том, что MailKit использует кодировка символов, такая как iso-8859-1 (или iso-8859-15?), и что принимающий клиент Outlook также использует однобайтовую кодировку символов для ее декодирования ... иначе MailKit использует UTF-8 и получающий клиент Outlook правильно распознает его как UTF-8 (UTF-8 использует 2 байта на символ акцента в латинских алфавитах), но не может отображать глифы из-за проблемы со шрифтом.

Если вы не установили явно кодировку символов для MailKit для использования в теле сообщения, тогда по умолчанию используется UTF-8 (что предполагает проблему со шрифтом).

Это пример того, как вы можете указать кодировку символов использовать в Mim eKit / MailKit:

var body = new TextPart ("plain");
body.SetText ("Test d'ênvoïe d'èmail avec des àccénts", Encoding.GetEncoding ("iso-8859-1"));

Итак, я предполагаю, что это оставляет нам вопрос о том, как вы создаете сообщение (и, в частности, тело сообщения)?

Если вы можете поделиться необработанный MIME, сгенерированный MimeKit / MailKit, это было бы полезно.

Для этого вы можете использовать метод MimeMessage.WriteTo(string fileName), а затем использовать свой любимый текстовый редактор, чтобы открыть файл и скопировать и вставить его содержимое.

...