У меня есть приложение, которое отправляет электронные письма, и в течение многих месяцев оно работало нормально. Недавно у меня были проблемы с utf-8
закодированными электронными письмами, отправленными на iPhone Exchange account
(то есть не IMAP
).
Все, что получатель должен был видеть, — это большой набор бессмысленных символов, таких как LS0tLS0tPV9QYXJ0XzE0N18[....]
.
Сравнивая заголовки своих электронных писем с Gmail, я заметил, что у меня есть дополнительные Content-Transfer-Encoding
, связанные с Content-Type: multipart/alternative;
.
Мое электронное письмо будет выглядеть так:
Delivered-To: ...
Received: ...
...
MIME-Version: ...
Content-Type: multipart/alternative;
boundary="----=_boundary"
Content-Transfer-Encoding: Base64 # <= the extra setting
----=_boundary
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: Base64
YmVu0Cg==
----=_boundary
Content-type: text/html; charset=utf-8
Content-Transfer-Encoding: Base64
PGh0bWwgeG1sbnM6bz0iIj48aGVhZD48dGl0bGU+PC90aXRsZT48L2hlYWQ+PGJvZHk+YmVub2l0
PC9ib2R5PjwvaHRtbD4NCjx9IjAiIC8+Cg==
----=_boundary
Если я удалю дополнительную настройку, моя электронная почта будет получена и будет отображаться правильно.
Мои вопросы:
- Нужна ли настройка
Encoding
сContent-Type: multipart/alternative;
даже в особых случаях? - Безопасно ли удалить его и просто продолжать использовать мое приложение, как раньше?
Изменить Я нашел на IETF
:
Соображения по кодированию. Многокомпонентные типы контента не могут иметь кодировку.
Но я также нашел на Wikipedia
:
Кодирование передачи содержимого составного типа всегда должно быть «7-битным», «8-битным» или «бинарным», чтобы избежать осложнений, которые могут возникнуть при многоуровневом декодировании.
Разве это не противоречиво?