Skip to content

Commit ddd37a3

Browse files
committed
#487: Moved header filtering logic from MimeMessageParser to EmailConverter. Now, this is now done the build process in EmailConverter, so all headers remain preserved after initial parsing.
1 parent b2eccd0 commit ddd37a3

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

Diff for: modules/simple-java-mail/src/main/java/org/simplejavamail/converter/EmailConverter.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.simplejavamail.api.email.EmailPopulatingBuilder;
1515
import org.simplejavamail.api.email.OriginalSmimeDetails;
1616
import org.simplejavamail.api.email.OriginalSmimeDetails.SmimeMode;
17+
import org.simplejavamail.api.internal.general.HeadersToIgnoreWhenParsingExternalEmails;
1718
import org.simplejavamail.api.internal.outlooksupport.model.EmailFromOutlookMessage;
1819
import org.simplejavamail.api.internal.outlooksupport.model.OutlookMessage;
1920
import org.simplejavamail.api.internal.smimesupport.builder.SmimeParseResult;
@@ -644,7 +645,15 @@ private static EmailPopulatingBuilder buildEmailFromMimeMessage(@NotNull final E
644645
if (parsed.getReplyToAddresses() != null) {
645646
builder.withReplyTo(parsed.getReplyToAddresses().getPersonal(), parsed.getReplyToAddresses().getAddress());
646647
}
647-
builder.withHeaders(parsed.getHeaders());
648+
649+
for (val headerEntry : parsed.getHeaders().entrySet()) {
650+
if (!HeadersToIgnoreWhenParsingExternalEmails.shouldIgnoreHeader(headerEntry.getKey())) {
651+
for (Object headerValue : headerEntry.getValue()) {
652+
builder.withHeader(headerEntry.getKey(), headerValue);
653+
}
654+
}
655+
}
656+
648657
if (parsed.getDispositionNotificationTo() != null) {
649658
builder.withDispositionNotificationTo(parsed.getDispositionNotificationTo());
650659
}

Diff for: modules/simple-java-mail/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageParser.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ private static MimeDataSource parseAttachment(@Nullable final String contentId,
152152
.build();
153153
}
154154

155-
@SuppressWarnings("StatementWithEmptyBody")
156155
private static void parseHeader(final DecodedHeader header, @NotNull final ParsedMimeMessageComponents parsedComponents) {
157156
val headerValue = decodeText(header.getValue());
158157
val headerName = decodeText(header.getName());
@@ -163,13 +162,11 @@ private static void parseHeader(final DecodedHeader header, @NotNull final Parse
163162
parsedComponents.returnReceiptTo = createAddress(headerValue, "Return-Receipt-To");
164163
} else if (isEmailHeader(header, "Return-Path")) {
165164
parsedComponents.bounceToAddress = createAddress(headerValue, "Return-Path");
166-
} else if (!HeadersToIgnoreWhenParsingExternalEmails.shouldIgnoreHeader(headerName)) {
165+
} else {
167166
if (!parsedComponents.headers.containsKey(headerName)) {
168167
parsedComponents.headers.put(headerName, new ArrayList<>());
169168
}
170169
parsedComponents.headers.get(headerName).add(MimeUtility.unfold(headerValue));
171-
} else {
172-
// header recognized, but not relevant (see #HEADERS_TO_IGNORE)
173170
}
174171
}
175172

0 commit comments

Comments
 (0)