в электронном письме тело сообщения mutipart (с вложением) передается как обычный текст вместо формата html - PullRequest
0 голосов
/ 08 мая 2020

Пишу приложение для почтового клиента android. В нем я использую JavaMail. При чтении писем с сервера все идет нормально, за исключением нескольких писем с вложениями. В этих случаях тело письма приходит в виде обычного текста вместо формата HTML.

Мой код следующий:

String str; //=bodyPart.toString();//(bodyPart.getContent());
if (bodyPart instanceof Part) {
   if (bodyPart.getContent() instanceof String) {
       str = bodyPart.getContent().toString();
   }
   else {
       MimeMultipart mimeMultipart = (MimeMultipart) bodyPart.getContent();
       str = getTextFromMimeMultipart(mimeMultipart);
   }
}
else
   str = bodyPart.getContent().toString();

//
//*****************************
//

private String getTextFromMimeMultipart(MimeMultipart mimeMultipart)  throws MessagingException, IOException {
   String result = "";
   int count = mimeMultipart.getCount();
   for (int i = 0; i < count; i++) {
       BodyPart bodyPart = mimeMultipart.getBodyPart(i);
       if (bodyPart.isMimeType("text/plain")) {
           result = result + "\n" + bodyPart.getContent();
           break; // without break same text appears twice in my tests
       }
       else if (bodyPart.isMimeType("text/html")) {
           String html = (String) bodyPart.getContent();
           result = result + "\n" + Jsoup.parse(html).text();//html;// + org.Jsoup.parse(html).text();
       }
       else if (bodyPart.getContent() instanceof MimeMultipart) {
           result = result + getTextFromMimeMultipart((MimeMultipart)bodyPart.getContent());
       }
   }
   return result;
}
...