Расшифровка темы письма в формате UTF-8? - PullRequest
9 голосов
/ 27 сентября 2011

У меня есть строка в таком виде: =?utf-8?B?zr...

И я хочу получить имя файла в правильной кодировке UTF-8.Есть ли где-нибудь в maven central метод библиотеки, который будет выполнять это декодирование для меня, или мне нужно будет протестировать шаблон и декодировать base64 вручную?

Ответы [ 3 ]

15 голосов
/ 27 сентября 2011

В терминологии MIME эти кодированные блоки называются кодированными словами.Проверьте javax.mail.internet.MimeUtility.decodeText в JavaMail.Метод decodeText декодирует все закодированные слова в строке.

Вы можете получить его из maven с помощью

 <groupId>javax.mail</groupId>
 <artifactId>mail</artifactId>
 <version>1.4.4</version>
4 голосов
/ 19 сентября 2013

MimeUtility.decodeText работает для меня,

например,

MimeUtility.decodeText("=?UTF-8?B?4K6q4K+N4K6q4K+K4K604K6/4K614K+BIQ==?=");
4 голосов
/ 27 сентября 2011
javax.mail.internet.MimeUtility.decodeWord()

С другой стороны, если вы используете JavaMail для декодирования ваших электронных писем, вам не нужно заботиться ни о парсинге темы, ни о синтаксическом анализе тела (вложений).

Кстати, он не обязательно должен быть Base64 (обычным для клиентов Apple), он также может быть Quoted-Printable (обычным для клиента MS Outlook).

Thunderbird использует любой более короткий формат (Base64 для японского языка, QP для большинства европейских языков).

Если вы действительно хотите реализовать это самостоятельно, взгляните на RFC2047 и RFC2184 (вы должны заметить, что есть несколько тонкостей, таких как раздельное кодирование в двух разных наборах символов или объединение смежных закодированных слов, разделенных только пробелом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...