проблема декодирования javamail BASE64DecoderStream - PullRequest
0 голосов
/ 12 июня 2018

Обнаружена проблема с Base64DecoderStream в javamail.Некоторое содержимое электронной почты, которое я получаю, выглядит следующим образом:

Content-Type: text/plain; charset=3D"utf-8"
Content-Transfer-Encoding: base64

QmFzZTY0IGlzIGEgZ2VuZXJpYyB0ZXJtIGZvciBhIG51bWJlciBvZiBzaW1pbGFyIGVuY29kaW5=
    n
    IHNjaGVtZXMgdGhhdCBlbmNvZGUgYmluYXJ5IGRhdGEgYnkgdHJlYXRpbmcgaXQgbnVtZXJpY2F=
    s
    bHkgYW5kIHRyYW5zbGF0aW5nIGl0IGludG8gYSBiYXNlIDY0IHJlcHJlc2VudGF0aW9uLiBUaGU=
    g
    QmFzZTY0IHRlcm0gb3JpZ2luYXRlcyBmcm9tIGEgc3BlY2lmaWMgTUlNRSBjb250ZW50IHRyYW5=
    z
    ZmVyIGVuY29kaW5nLg==

В идеале знак = должен быть заменен одним символом в следующей строке, но gsuite (Gmail) иногда так и делает.Это приводит к тому, что Base64DecoderStream повреждает сообщение.Однако Outlook и многие популярные онлайн-декодеры base64 хорошо справляются с этим контентом base64.Это можно исправить?

1 Ответ

0 голосов
/ 13 июня 2018

Дополнительные подробности были предоставлены в частном порядке, что позволило мне определить, что проблема в том, что сообщение включает в себя вложение сообщения MIME-типа / rfc822 (исходное сообщение), и что вложение использует Content-Transfer-Encoding для quoted-printable,Спецификация MIME не позволяет использовать эту кодировку для содержимого MIME этого типа.Это нарушение спецификации MIME, которую Google действительно нужно исправить.Пожалуйста, предоставьте им эту дополнительную информацию, если они сами этого не выяснили.

RFC 2046, раздел 5.2.1, гласит:

Нет кодирования, кроме "7bit", "8-битный "или" двоичный "разрешен для тела объекта" message / rfc822 ".

В то же время вы можете установить свойство JavaMail System mail.mime.allowencodedmessages в "true", чтобы обойти эту ошибку в GSuite.

...