JAMES-2346 MDN reports should be reported as attachments
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1be875be Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1be875be Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1be875be Branch: refs/heads/master Commit: 1be875be2682a146dcb74fef6720615e014edfc5 Parents: 2070966 Author: benwa <btell...@linagora.com> Authored: Thu Mar 8 16:19:14 2018 +0700 Committer: benwa <btell...@linagora.com> Committed: Tue Mar 13 15:11:54 2018 +0700 ---------------------------------------------------------------------- mailbox/store/pom.xml | 5 +++ .../store/mail/model/impl/MessageParser.java | 5 +-- .../mail/model/impl/MessageParserTest.java | 37 ++++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/pom.xml ---------------------------------------------------------------------- diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml index 9befb3a..ac6dc19 100644 --- a/mailbox/store/pom.xml +++ b/mailbox/store/pom.xml @@ -60,6 +60,11 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>james-mdn</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-util</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java index 3331b7b..ed09191 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java @@ -57,7 +57,6 @@ public class MessageParser { .setMaxContentLen(-1) .setMaxHeaderCount(-1) .setMaxHeaderLen(-1) - .setMaxHeaderCount(-1) .setMaxLineLen(-1) .build(); private static final String TEXT_MEDIA_TYPE = "text"; @@ -68,7 +67,9 @@ public class MessageParser { private static final List<String> ATTACHMENT_CONTENT_DISPOSITIONS = ImmutableList.of( ContentDispositionField.DISPOSITION_TYPE_ATTACHMENT.toLowerCase(Locale.US), ContentDispositionField.DISPOSITION_TYPE_INLINE.toLowerCase(Locale.US)); - private static final ImmutableList<String> ATTACHMENT_CONTENT_TYPES = ImmutableList.of("application/pgp-signature"); + private static final ImmutableList<String> ATTACHMENT_CONTENT_TYPES = ImmutableList.of( + "application/pgp-signature", + "message/disposition-notification"); private static final Logger LOGGER = LoggerFactory.getLogger(MessageParser.class); private final Cid.CidParser cidParser; http://git-wip-us.apache.org/repos/asf/james-project/blob/1be875be/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java index 61df5a9..4fd3ca9 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java @@ -21,12 +21,22 @@ package org.apache.james.mailbox.store.mail.model.impl; import static org.assertj.core.api.Assertions.assertThat; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.util.List; import java.util.Optional; import org.apache.james.mailbox.model.Attachment; import org.apache.james.mailbox.model.Cid; import org.apache.james.mailbox.model.MessageAttachment; +import org.apache.james.mdn.MDN; +import org.apache.james.mdn.MDNReport; +import org.apache.james.mdn.action.mode.DispositionActionMode; +import org.apache.james.mdn.fields.Disposition; +import org.apache.james.mdn.sending.mode.DispositionSendingMode; +import org.apache.james.mdn.type.DispositionType; +import org.apache.james.mime4j.dom.Message; +import org.apache.james.mime4j.message.DefaultMessageWriter; import org.junit.Before; import org.junit.Test; @@ -266,4 +276,31 @@ public class MessageParserTest { .extracting(Optional::get) .containsOnly("message suivi", "signature.asc"); } + + @Test + public void mdnReportShouldBeConsideredAsAttachmentWhenDispositionContentType() throws Exception { + Message message = MDN.builder() + .humanReadableText("A little test") + .report(MDNReport.builder() + .dispositionField(Disposition.builder() + .actionMode(DispositionActionMode.Automatic) + .sendingMode(DispositionSendingMode.Automatic) + .type(DispositionType.Processed) + .build()) + .originalMessageIdField("zeug...@domain.tld") + .reportingUserAgentField("Thunderbird") + .finalRecipientField("u...@domain.tld") + .originalRecipientField("u...@domain.tld") + .build()) + .build() + .asMime4JMessageBuilder() + .build(); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + new DefaultMessageWriter().writeMessage(message, outputStream); + + List<MessageAttachment> result = testee.retrieveAttachments(new ByteArrayInputStream(outputStream.toByteArray())); + assertThat(result).hasSize(1) + .allMatch(attachment -> attachment.getAttachment().getType().equals(MDN.DISPOSITION_CONTENT_TYPE)); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org