2

Я отправляю простую почту на Windows XP с 4-мя вложениями:

  • dummy.txt (конец строки: CRLF)
  • dummy.xml (конец строки: CRLF)
  • dummyjustlf.txt (конец строки: LF)
  • dummyjustlf.xml (конец строки: LF)

По словам клиента, я отправляю письмо с изменением конца строки:

  • Outlook '07: EOL не изменились
  • Thunderbird 3: EOL файла dummyjustlf.txt изменен на CRLF, остальные не изменены
  • Java Mail: EOL для dummyjustlf.txt и dummyjustlf.xml изменен на CRLF, остальные не изменены

Как определяется это поведение? Есть ли в RFC это документально? Клиент решает, как отправлять или как получать почту с вложениями и конвертировать EOL так, как он хочет?

1 ответ1

4

Вероятно, это сочетание почтового клиента и платформы, на которой вы работаете.

В идеале, вложения должны всегда оставаться одинаковыми, и если бы файлы были двоичными (или помещались в двоичный контейнер, такой как .zip), то проблем не было бы.

Я подозреваю, что происходит, когда клиентское приложение вставляет текстовые сообщения в виде вложений с кодировкой "для печати в кавычках", а не с Base64 (эти двоичные файлы кодируются как). Чтобы проверить это, вам нужно просмотреть необработанные данные сообщения в приложении получения электронной почты:

  • В Gmail это "Показать оригинал" в меню рядом с верхней правой кнопкой "Ответить".
  • В Thunderbird, Просмотр -> Источник сообщения
  • Вероятно, есть эквиваленты в почте Outlook и Java.

Вам нужно искать вложения, которые начинаются с заголовков, таких как:

--0016e65c71b2a252eb04a3a1f642
Content-Type: text/plain; charset=US-ASCII; name="test.txt"
Content-Disposition: attachment; filename="test.txt"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gnvt3nlf0

Если «Content-Transfer-Encoding» является чем-то отличным от "base64" (например, «quoted-printable»), и вы можете увидеть текстовое содержимое текстовых файлов ниже, то это, вероятно, источник ошибки, в виде строки окончания, вероятно, нормализуются отправляющим приложением при отправке сообщения (большинство писем отправляются в виде открытого текста).

Кодировка Base64 преобразует двоичные файлы в открытый текст, который может быть отправлен отправителем и снова преобразован обратно в двоичный файл в получателе, и не попадает в мир электронной почты, управляемый открытым текстом. Это, вероятно, то, что Outlook делает для всех вложений, и что TB делает для файлов .xml.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .