Я пытаюсь отправить электронные письма, содержащие символы, отличные от ASCII, с использованием классов SmtpClient
и MailMessage
.Тематическая кодировка на SmtpClient/MailMessage
Я использую внешнюю почтовую службу (MailChimp), и некоторые из моих писем были отклонены их SMTP-сервером. Я связался с ними, и это то, что они ответили:
Оказывается, сюжетная линия идет в кодировке Base64, а затем в кавычках печати закодированы, что в целом должно быть хорошо, но один из персонажей была нарушена по двум линиям , Поэтому, когда ваши сюжетные линии немного длиннее, для правильной обработки они разбиваются на две строки. При использовании UTF-8, цитируемого для печати в строке темы, символьные строки не должны быть разбиты между строками. Вместо этого строка должна быть закорочена так, чтобы полная символьная строка оставалась вместе. В этом случае это не происходит, поэтому строка символов, представляющая один символ, разбивается на несколько строк и поэтому не является законным кодированием UTF-8.
Проблематика предметом является следующее:
Subject: XXXXXXX - 5 personnes vous ont nommé guide
Который, в UTF-8/Base64:
Subject: WFhYWFhYWCAtIDUgcGVyc29ubmVzIHZvdXMgb250IG5vbW3DqSBndWlkZQ==
Потому, что заголовок будет превышать определенную максимальную длину (я не уверен независимо от того, является ли это кодировкой с котировкой и печатью из 76 символов в строке или пределом заголовка SMTP), после кодирования и разделения заголовок станет следующим:
Subject: =?utf-8?B?WFhYWFhYWCAtIDUgcGVyc29ubmVzIHZvdXMgb250IG5vbW3D?=
=?utf-8?B?qSBndWlkZQ==?=
По-видимому, это вызывает проблему при декодировании (поскольку первая строка не может быть расшифрована до допустимой строки). Я не уверен, что полностью понимаю проблему, и у меня есть следующие вопросы:
- Почему?? Utf-8? B? часть повторяется? Не следует ли кодировать QP до разделения линии и, следовательно, ее заголовок не должен повторяться?
- После QP-декодирования, не должно быть, мы получим допустимую строку Base64 с 1 строкой?
- В начале второй строки есть пробел, который находится за пределами QP-кодировки, может быть проблема?
- Является ли кодировщик сломанным, или это декодер?
Также обратите внимание, что некоторые другие SMTP-серверы будут принимать это сообщение, хотя это не значит, что оно действительно.
В качестве обходного пути я попытался отключить кодировку Base64, которая, по-видимому, не нужна, однако класс MailMessage имеет свойство , которое управляет этой кодировкой, но только для основной части сообщения. Кажется, что никакое свойство не контролирует «передачу» кодировки объекта.
Работа для меня не работает. Мои персонажи не-ascii по-прежнему отображаются как «странные-выглядящие символы» в теме. :( – PussInBoots
У вас может быть другая проблема: у меня не было странных перспективных персонажей, но с сообщениями, отклоненными некоторыми SMTP-серверами. –
О, хорошо. – PussInBoots