Расшифровка поля ОТ в почтовом клиенте

Я застрял в этой проблеме со вчерашнего дня, поэтому надеюсь, что здесь кто-то может помочь.

Я пишу приложение, которое должно читать электронную почту с сервера POP3. На самом деле приложение работает, но у меня проблема в том, что для какого-то сообщения я получаю поле «От» с чем-то вроде этого внутри:

=?UTF-8?Q?aaaa=20bbbb?=

что это? Я могу прочитать имя отправителя в (то есть в примере «aaaabbbbb»), но как мне его расшифровать?

Я должен показать эту строку внутри TextView, может быть, есть свойство textview, которое я могу установить?

спасибо всем большое Криштиану

РЕДАКТИРОВАТЬ: я нашел еще одно сообщение (=?utf-8?Q?, добавленное при получении писем), где кто-то предлагает используйте функцию PHP "mb_decode_mimeheader", чтобы получить данные без такого скучного заголовка... есть ли эквивалент для Javamail?

РЕДАКТИРОВАТЬ: Хорошо, нашел решение в этом сообщении: Расшифровка темы электронной почты UTF-8?

последний ответ, MimeUtility.decodeText отлично работает для меня.


person Cristiano Zambon    schedule 01.12.2013    source источник


Ответы (3)


Итак, поехали.

вот что я нашел: из здесь я понял, что это за маркеры и зачем они там.

Затем здесь, на SO, я нашел решение, которое работало на меня... в начале. После дальнейшей проверки я обнаружил несколько сообщений электронной почты, которые не были правильно декодированы методом decodeText, а затем я обнаружил, почему: иногда, на самом деле я не знаю почему, темы заключались в кавычки, и каждый раз, когда это происходило, decodeText не сработало.

Обходной путь: просто удалите все кавычки из строки (или кавычки в начале и в конце, если вы можете добавить больше в свою строку):

string2beConverted = string2beConverted.replace("\"", "");String decodedString = MimeUtiliy.decodeText(string2beConverted);

Криштиану

person Cristiano Zambon    schedule 01.12.2013

Я думаю, что это код изображения UTF8. Если вы когда-либо получали электронное письмо с изображением в строке темы, например, сердцем или чем-то еще.

Вот ссылка на похожие строки изображений UTF8: http://thisthingiscrazy.com/a-collection-of-email-subject-utf-8-images/

Если вы показываете это в TextView, эта ссылка SO может помочь: Как мне настроить TextView для отображения UTF-8, когда String не является встроенным ресурсом?

person Jim Stewart    schedule 01.12.2013
comment
Ясно, спасибо... знаете ли вы, есть ли способ заставить текстовое представление показывать изображение? что-то вроде использования UTF-8 или около того... - person Cristiano Zambon; 01.12.2013
comment
Я отредактировал сообщение, добавив дополнительную информацию и ссылку, которая может помочь - person Jim Stewart; 01.12.2013
comment
Еще раз спасибо, но похоже это не мой случай. У меня есть строка, закодированная в UTF-8, но textview не показывает ее декодированной... есть ли способ сообщить TextView, чтобы декодировать ее и отображать символы вместо маркеров UTF-8 (например,? UTF-8? и т. д.) так далее)? благодарю вас - person Cristiano Zambon; 01.12.2013
comment
Если вы решили проблему, не забудьте отметить вопрос как закрытый/отвеченный. - person Jim Stewart; 01.12.2013
comment
Как мне это сделать? автоответ сам себе? принимая ваш ответ? или я могу пометить вопрос, на который ответил как-то иначе? - person Cristiano Zambon; 01.12.2013

Вы используете метод getFrom? Он должен обрабатывать все декодирование для вас. Он вернет массив объектов Address, которые вы можете привести к объектам InternetAddress, а затем извлечь поля адреса электронной почты и личного имени. Поле личного имени будет расшифровано для вас.

person Bill Shannon    schedule 01.12.2013
comment
Извините, Билл, только сейчас увидел, что вы ответили почти месяц назад :( кстати... да, я использую метод getFrom, но передаю результат в строку. Спасибо за предложение, я попробую! - person Cristiano Zambon; 29.12.2013