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 2021/02/23 03:45:17 UTC
[james-project] 04/14: JAMES-3431 Better format DSN when no error
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 814f841ea16ecdf609afa0c3844ef0d9fa12a51e
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Feb 17 12:18:01 2021 +0700
JAMES-3431 Better format DSN when no error message
---
.../apache/james/transport/mailets/DSNBounce.java | 11 ++-
.../james/transport/mailets/DSNBounceTest.java | 98 ++++++++++++++++++++++
2 files changed, 106 insertions(+), 3 deletions(-)
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 b37e206..3dcfe7b 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
@@ -434,9 +434,14 @@ public class DSNBounce extends GenericMailet implements RedirectNotify {
.collect(Collectors.joining(", ")));
builder.append(LINE_BREAK).append(LINE_BREAK);
if (action.shouldIncludeDiagnostic()) {
- builder.append("Error message:").append(LINE_BREAK);
- builder.append(AttributeUtils.getValueAndCastFromMail(originalMail, DELIVERY_ERROR, String.class).orElse("")).append(LINE_BREAK);
- builder.append(LINE_BREAK);
+ Optional<String> deliveryError = AttributeUtils.getValueAndCastFromMail(originalMail, DELIVERY_ERROR, String.class);
+
+ deliveryError.or(() -> Optional.ofNullable(originalMail.getErrorMessage()))
+ .ifPresent(message -> {
+ builder.append("Error message:").append(LINE_BREAK);
+ builder.append(message).append(LINE_BREAK);
+ builder.append(LINE_BREAK);
+ });
}
MimeBodyPart bodyPart = new MimeBodyPart();
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 153c1d1..84b8248 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
@@ -1364,4 +1364,102 @@ public class DSNBounceTest {
SharedByteArrayInputStream actualContent = (SharedByteArrayInputStream) content.getBodyPart(1).getContent();
assertThat(IOUtils.toString(actualContent, StandardCharsets.UTF_8)).isEqualTo(expectedContent);
}
+
+ @Test
+ void errorMessagePartShouldNotBeAddedWhenNoError() throws Exception {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .mailetName(MAILET_NAME)
+ .mailetContext(fakeMailContext)
+ .setProperty("defaultStatus", "4.0.0")
+ .build();
+ dsnBounce.init(mailetConfig);
+
+ MailAddress senderMailAddress = new MailAddress("sender@domain.com");
+ FakeMail mail = FakeMail.builder()
+ .name(MAILET_NAME)
+ .sender(senderMailAddress)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setText("My content"))
+ .recipient("recipient@domain.com")
+ .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
+ .remoteAddr("remoteHost")
+ .build();
+ mail.setDsnParameters(DsnParameters.builder().envId(DsnParameters.EnvId.of("xyz")).build().get());
+
+ dsnBounce.service(mail);
+
+ List<SentMail> sentMails = fakeMailContext.getSentMails();
+ assertThat(sentMails).hasSize(1);
+ SentMail sentMail = sentMails.get(0);
+ MimeMessage sentMessage = sentMail.getMsg();
+
+ assertThat(MimeMessageUtil.asString(sentMessage))
+ .doesNotContain("Error message:");
+ }
+
+ @Test
+ void errorShouldBeAdded() throws Exception {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .mailetName(MAILET_NAME)
+ .mailetContext(fakeMailContext)
+ .setProperty("defaultStatus", "4.0.0")
+ .build();
+ dsnBounce.init(mailetConfig);
+
+ MailAddress senderMailAddress = new MailAddress("sender@domain.com");
+ FakeMail mail = FakeMail.builder()
+ .name(MAILET_NAME)
+ .sender(senderMailAddress)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setText("My content"))
+ .recipient("recipient@domain.com")
+ .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
+ .remoteAddr("remoteHost")
+ .errorMessage("This is what happen...")
+ .build();
+ mail.setDsnParameters(DsnParameters.builder().envId(DsnParameters.EnvId.of("xyz")).build().get());
+
+ dsnBounce.service(mail);
+
+ List<SentMail> sentMails = fakeMailContext.getSentMails();
+ assertThat(sentMails).hasSize(1);
+ SentMail sentMail = sentMails.get(0);
+ MimeMessage sentMessage = sentMail.getMsg();
+
+ assertThat(MimeMessageUtil.asString(sentMessage))
+ .contains("Error message:\nThis is what happen...");
+ }
+
+ @Test
+ void deliveryErrorShouldBeAdded() throws Exception {
+ FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
+ .mailetName(MAILET_NAME)
+ .mailetContext(fakeMailContext)
+ .setProperty("defaultStatus", "4.0.0")
+ .build();
+ dsnBounce.init(mailetConfig);
+
+ MailAddress senderMailAddress = new MailAddress("sender@domain.com");
+ FakeMail mail = FakeMail.builder()
+ .name(MAILET_NAME)
+ .sender(senderMailAddress)
+ .mimeMessage(MimeMessageBuilder.mimeMessageBuilder()
+ .setText("My content"))
+ .recipient("recipient@domain.com")
+ .lastUpdated(Date.from(Instant.parse("2016-09-08T14:25:52.000Z")))
+ .remoteAddr("remoteHost")
+ .attribute(new Attribute(AttributeName.of("delivery-error"), AttributeValue.of("This is what happen...")))
+ .build();
+ mail.setDsnParameters(DsnParameters.builder().envId(DsnParameters.EnvId.of("xyz")).build().get());
+
+ dsnBounce.service(mail);
+
+ List<SentMail> sentMails = fakeMailContext.getSentMails();
+ assertThat(sentMails).hasSize(1);
+ SentMail sentMail = sentMails.get(0);
+ MimeMessage sentMessage = sentMail.getMsg();
+
+ assertThat(MimeMessageUtil.asString(sentMessage))
+ .contains("Error message:\nThis is what happen...");
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org