Тема письма не декодируется, если начинается с =? UTF-8? B? javamail 1.5.6 - PullRequest
0 голосов
/ 24 октября 2019

У меня есть письмо с следующим заголовком Тема

Тема:?? = UTF-8 B UmlmLiBQcmF0LjogNDhBVi04MDc5IEF0dHJhdmVyc2FtZW50byB0ZWxlZm9uaWNvIHN1cGVyaW9yZSwgaW4gY2F2ZWRpbyBlc2lzdGVudGUsIGNvbiBjYXZpIGEgRi5PLiBhbCBrbSA2NCs0MjAgZGVsbGEgbGluZWEgZmVycm92aWFyaWEgQVYvQUMgVG9yaW5vIC0gTWlsYW5vIG5lbCBDb211bmUgZGkgR3JlZ2dpbyAgW1JGSS1EUFItRFRQX1RPLklOR1xQRUNcUFwyMDE5XDAwMDUyNDRd = =

1004 * Я использую JavaMail 1.5.6, чтобы разобрать его и синтаксическийиз этого заголовка выдается исключение, в результате которого субъект не анализируется:

строка метода decodeWord класса MimeUtility 928

com.sun.mail.util.DecodingException: BASE64Decoder:Ошибка в закодированном потоке: нужно как минимум 2 действительных символа base64, но перед добавлением символа (=) было получено только 0, 10 самых последних символов были следующими: "wMDUyNDRd ="

В любом случае, это похоже на ошибку в декодере javamailесли я открою эту почту с помощью Outlook, тема будет прочитана хорошо

Например, это прекрасно работает:

String rawvalue = "UmlmLiBQcmF0LjogNDhBVi04MDc5IEF0dHJhdmVyc2FtZW50byB0ZWxlZm9uaWNvIHN1cGVyaW9yZSwgaW4gY2F2ZWRpbyBlc2lzdGVudGUsIGNvbiBjYXZpIGEgRi5PLiBhbCBrbSA2NCs0MjAgZGVsbGEgbGluZWEgZmVycm92aWFyaWEgQVYvQUMgVG9yaW5vIC0gTWlsYW5vIG5lbCBDb211bmUgZGkgR3JlZ2dpbyAgW1JGSS1EUFItRFRQX1RPLklOR1xQRUNcUFwyMDE5XDAwMDUyNDRd=?=";

// Get bytes from string 
byte[] byteArray = Base64.decodeBase64(rawvalue.getBytes());

// Print the decoded string  
String decodedString = new String(byteArray); 
System.out.println(rawvalue + " = " + decodedString);

Thx

1 Ответ

0 голосов
/ 29 октября 2019

Я нашел решение, что результаты темы почты недействительны, по крайней мере, для https://base64.guru/tools/validator.

Затем при отладке Javamail я обнаружил, что он использует com.sun.mail.util.BASE64DecoderStreamкоторый использует системное свойство mail.mime.base64.ignoreerrors . Затем я попытался установить значение true , и это устранило мою проблему.

...