You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2020/12/21 07:29:36 UTC
[james-project] 11/17: JAMES-3431 DSNBounce: Add the original
subject as part of human readable message
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 1c5597d87ade7bd2787525308dc1cea917e7446d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Dec 17 09:51:45 2020 +0700
JAMES-3431 DSNBounce: Add the original subject as part of human readable message
This will help the received to correlate the DSN message with the mail he sent.
---
.../apache/james/transport/mailets/DSNBounce.java | 2 ++
.../james/transport/mailets/DSNBounceTest.java | 42 ++++++++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
index 081caa3..11be842 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
@@ -412,6 +412,8 @@ public class DSNBounce extends GenericMailet implements RedirectNotify {
StringBuilder builder = new StringBuilder();
builder.append(bounceMessage()).append(LINE_BREAK);
+ Optional.ofNullable(originalMail.getMessage().getSubject())
+ .ifPresent(subject -> builder.append("Original email subject: ").append(subject).append(LINE_BREAK).append(LINE_BREAK));
builder.append(action.asString()).append(" recipient(s):").append(LINE_BREAK);
builder.append(originalMail.getRecipients()
.stream()
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
index f3e31d8..e05a81f 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/DSNBounceTest.java
@@ -648,6 +648,48 @@ public class DSNBounceTest {
}
@Test
+ void originalSubjectShouldBeCarriedOver() throws Exception {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .mailetName(MAILET_NAME)
+ .mailetContext(fakeMailContext)
+ .build();
+ dsnBounce.init(mailetConfig);
+
+ MailAddress senderMailAddress = new MailAddress("sender@domain.com");
+ FakeMail mail = FakeMail.builder()
+ .name(MAILET_NAME)
+ .sender(senderMailAddress)
+ .attribute(DELIVERY_ERROR_ATTRIBUTE)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setSubject("Banana power!")
+ .setText("My content"))
+ .recipient("recipient@domain.com")
+ .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
+ .build();
+
+ dsnBounce.service(mail);
+
+ String hostname = InetAddress.getLocalHost().getHostName();
+ String expectedContent = "Hi. This is the James mail server at " + hostname + ".\nI'm afraid I wasn't able to deliver your message to the following addresses.\nThis is a permanent error; I've given up. Sorry it didn't work out. Below\nI include the list of recipients and the reason why I was unable to deliver\nyour message.\n\n" +
+ "Original email subject: Banana power!\n\n" +
+ "Failed recipient(s):\n" +
+ "recipient@domain.com\n" +
+ "\n" +
+ "Error message:\n" +
+ "Delivery error\n" +
+ "\n";
+
+ List<SentMail> sentMails = fakeMailContext.getSentMails();
+ assertThat(sentMails).hasSize(1);
+ SentMail sentMail = sentMails.get(0);
+ MimeMessage sentMessage = sentMail.getMsg();
+ MimeMultipart content = (MimeMultipart) sentMessage.getContent();
+ BodyPart bodyPart = content.getBodyPart(0);
+ assertThat(bodyPart.getContentType()).isEqualTo("text/plain; charset=us-ascii");
+ assertThat(bodyPart.getContent()).isEqualTo(expectedContent);
+ }
+
+ @Test
void serviceShouldSendMultipartMailContainingTextPartWhenCustomMessageIsConfigured() throws Exception {
FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
.mailetName(MAILET_NAME)
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org