From f7476f181c743d9178d9d5a1d77a6a9d10d5029b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Ma=CC=88del?= Date: Wed, 2 May 2018 13:37:01 +0200 Subject: [PATCH] #139: Make MimeMessageParser support multiple body parts of same Content-Type for text/plain and text/html --- .../mimemessage/MimeMessageParser.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageParser.java b/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageParser.java index 0b6935c15..4b3ba0a97 100644 --- a/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageParser.java +++ b/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageParser.java @@ -116,10 +116,10 @@ private static void parseMimePartTree(@Nonnull final MimePart currentPart, @Nonn final String disposition = parseDisposition(currentPart); - if (isMimeType(currentPart, "text/plain") && parsedComponents.plainContent == null && !Part.ATTACHMENT.equalsIgnoreCase(disposition)) { - parsedComponents.plainContent = parseContent(currentPart); - } else if (isMimeType(currentPart, "text/html") && parsedComponents.htmlContent == null && !Part.ATTACHMENT.equalsIgnoreCase(disposition)) { - parsedComponents.htmlContent = parseContent(currentPart); + if (isMimeType(currentPart, "text/plain") && !Part.ATTACHMENT.equalsIgnoreCase(disposition)) { + parsedComponents.plainContent.append(parseContent(currentPart)); + } else if (isMimeType(currentPart, "text/html") && !Part.ATTACHMENT.equalsIgnoreCase(disposition)) { + parsedComponents.htmlContent.append(parseContent(currentPart)); } else if (isMimeType(currentPart, "multipart/*")) { final Multipart mp = parseContent(currentPart); for (int i = 0, count = countBodyParts(mp); i < count; i++) { @@ -457,9 +457,9 @@ public static class ParsedMimeMessageComponents { private InternetAddress dispositionNotificationTo; private InternetAddress returnReceiptTo; private InternetAddress bounceToAddress; - private String plainContent; - private String htmlContent; - + private StringBuilder plainContent = new StringBuilder(); + private StringBuilder htmlContent = new StringBuilder(); + public String getMessageId() { return messageId; } @@ -513,11 +513,11 @@ public InternetAddress getBounceToAddress() { } public String getPlainContent() { - return plainContent; + return plainContent.length() == 0 ? null : plainContent.toString(); } - + public String getHtmlContent() { - return htmlContent; + return htmlContent.length() == 0 ? null : htmlContent.toString(); } } } \ No newline at end of file