JAMES-2363 MimeMessageBuilder should preserve MessageID
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ae042f00 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ae042f00 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ae042f00 Branch: refs/heads/master Commit: ae042f00f0343a89bfdb0c58f802b87b8fb4e73b Parents: ce04a35 Author: benwa <[email protected]> Authored: Thu Mar 29 11:29:05 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Mar 29 16:44:49 2018 +0700 ---------------------------------------------------------------------- .../james/core/builder/MimeMessageBuilder.java | 12 +++-- .../core/builder/MimeMessageBuilderTest.java | 53 ++++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ae042f00/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java b/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java index 303743e..044360f 100644 --- a/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java +++ b/core/src/main/java/org/apache/james/core/builder/MimeMessageBuilder.java @@ -393,13 +393,19 @@ public class MimeMessageBuilder { if (!bccAddresses.isEmpty()) { mimeMessage.setRecipients(Message.RecipientType.BCC, bccAddresses.toArray(new InternetAddress[bccAddresses.size()])); } + + MimeMessage wrappedMessage = MimeMessageWrapper.wrap(mimeMessage); + List<Header> headerList = headers.build(); for (Header header: headerList) { - mimeMessage.addHeader(header.name, header.value); + if (header.name.equals("Message-ID")) { + wrappedMessage.setHeader(header.name, header.value); + } else { + wrappedMessage.addHeader(header.name, header.value); + } } - - MimeMessage wrappedMessage = MimeMessageWrapper.wrap(mimeMessage); wrappedMessage.saveChanges(); + return wrappedMessage; } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae042f00/core/src/test/java/org/apache/james/core/builder/MimeMessageBuilderTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/james/core/builder/MimeMessageBuilderTest.java b/core/src/test/java/org/apache/james/core/builder/MimeMessageBuilderTest.java new file mode 100644 index 0000000..bf33f07 --- /dev/null +++ b/core/src/test/java/org/apache/james/core/builder/MimeMessageBuilderTest.java @@ -0,0 +1,53 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.core.builder; + +import static org.assertj.core.api.Assertions.assertThat; + +import javax.mail.internet.MimeMessage; + +import org.junit.Test; + +public class MimeMessageBuilderTest { + + @Test + public void buildShouldPreserveMessageID() throws Exception { + String messageID = "<abc@123>"; + MimeMessage mimeMessage = MimeMessageBuilder.mimeMessageBuilder() + .addHeader("Message-ID", messageID) + .build(); + + assertThat(mimeMessage.getMessageID()) + .isEqualTo(messageID); + } + + @Test + public void buildShouldAllowMultiValuedHeader() throws Exception { + String headerName = "header"; + MimeMessage mimeMessage = MimeMessageBuilder.mimeMessageBuilder() + .addHeader(headerName, "value1") + .addHeader(headerName, "value2") + .build(); + + assertThat(mimeMessage.getHeader(headerName)) + .hasSize(2); + } + +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
