Вероятно, это сочетание почтового клиента и платформы, на которой вы работаете.
В идеале, вложения должны всегда оставаться одинаковыми, и если бы файлы были двоичными (или помещались в двоичный контейнер, такой как .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.