Recognize all parts marked with 'multipart/'
Gerrit currently only recognizes a subset of multipart MIME messages.
Apache James supports all known types and this change makes it so that
Gerrit does too.
This fixes a bug where inbound emails would not be parsed, because the
message was signed and is therefore wrapped in a 'multipart/signed'
part.
Change-Id: I0de8820188e5295731d9253c9bb3f452da96908a
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/RawMailParser.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/RawMailParser.java
index 3e45e02..3ba9de7 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/RawMailParser.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/RawMailParser.java
@@ -156,7 +156,7 @@
} else if (part.getMimeType().equals("text/html")) {
htmlBuilder.append(result);
}
- } else if (isMixedOrAlternative(part.getMimeType())) {
+ } else if (isMultipart(part.getMimeType())) {
Multipart multipart = (Multipart) part.getBody();
for (Entity e : multipart.getBodyParts()) {
handleMimePart(e, textBuilder, htmlBuilder);
@@ -168,8 +168,8 @@
return (mimeType.equals("text/plain") || mimeType.equals("text/html"));
}
- private static boolean isMixedOrAlternative(String mimeType) {
- return mimeType.equals("multipart/alternative") || mimeType.equals("multipart/mixed");
+ private static boolean isMultipart(String mimeType) {
+ return mimeType.startsWith("multipart/");
}
private static boolean isAttachment(String dispositionType) {