2015-07-14 4 views
1

В моем проекте мне необходимо прочитать письма и сохранить его содержимое на жестком диске, используя почтовый ящик MS Exchange, используя javamail. Но я обнаружил, что даже самое простое электронное письмо, которое я получаю, сохраняется с содержимым html, например headbody и т. Д., Даже когда я пишу только два слова с форматом, без изображений, без вложений. Но я просто хочу текст электронной почты.Извлечь только текстовую часть тела электронной почты, используя javamail, без содержимого html

Часть кода:

Object content = part.getContent(); 
if (content instanceof InputStream || content instanceof String) { 
     if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()) || 
      StringUtils.isNotBlank(part.getFileName())) { 
    String messageBody = part.getContent().toString(); 
....(write this string to files) 
    } 
} 

Я могу написать:

Hello world. 

и я получаю TXT со всеми его HTML код и fontface и теги, как <html> и так далее.

Я видел this question, и я нашел его только для получения текстового содержимого, но я не могу комментировать там, поэтому я должен опубликовать новый вопрос, и я не вижу разницы между моим кодом и его. Он писал:

if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT))) { 


    DataHandler handler = bodyPart.getDataHandler(); 

    s1 = (String) bodyPart.getContent();` 

Так это о DataHandler? Но он нигде не используется? Может кто-нибудь помочь?

ответ

0

Прежде всего, вы захотите прочитать эту запись в разделе JavaMail, в которой рассказывается, как find the main message body. Как написано, он предпочитает тело html над телом обычного текста в тех случаях, когда сообщение содержит оба. Должно быть ясно, как отменить это предпочтение.

Но не все сообщения будут содержать как текстовые, так и текстовые версии тела сообщения. Если вы получите только html, вам придется написать свой собственный код для обработки строки и удалить теги html или использовать другой продукт для обработки html и удаления тегов.

+0

Спасибо за комментарий, но я не понимаю, почему заказ означает что-то в указанной вами ссылке. И изменить порядок 'if-else' изменяет предпочтение и вывод? Можете ли вы указать немного больше? – FaithReaper

+0

В RFC 2046, который определяет множественный/альтернативный вариант, альтернативы появляются в порядке возрастания верности исходному контенту. Это означает, что вы найдете текст/plain перед текстом/html. Если вы предпочитаете text/plain, вы можете изменить этот код для возврата, как только он найдет текст/обычный контент; нет необходимости продолжать искать другие части тела. –

+0

Хорошо спасибо. Я решил получить целое сообщение как html, потому что он содержит больше информации. Я предпочитаю поддерживать структуру электронных писем и не испортить весь текст. – FaithReaper