Skip to content

Commit eb57210

Browse files
committed
#484: [bug] Addresses passed as string are not always interpreted correctly
1 parent e211abc commit eb57210

File tree

4 files changed

+26
-11
lines changed

4 files changed

+26
-11
lines changed

modules/core-module/src/main/java/org/simplejavamail/api/email/EmailPopulatingBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1455,7 +1455,7 @@ public interface EmailPopulatingBuilder {
14551455
EmailPopulatingBuilder withReturnReceiptTo(@NotNull Recipient recipient);
14561456

14571457
/**
1458-
* Delegates to {@link #withOverrideReceivers(List<Recipient>)}.
1458+
* Delegates to {@link #withOverrideReceivers(List)}
14591459
*/
14601460
EmailPopulatingBuilder withOverrideReceivers(@NotNull Recipient ...recipients);
14611461

modules/simple-java-mail/src/main/java/org/simplejavamail/email/internal/EmailPopulatingBuilderImpl.java

+13-10
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
import static org.simplejavamail.internal.smimesupport.SmimeRecognitionUtil.isGeneratedSmimeMessageId;
8181
import static org.simplejavamail.internal.util.MiscUtil.defaultTo;
8282
import static org.simplejavamail.internal.util.MiscUtil.extractEmailAddresses;
83+
import static org.simplejavamail.internal.util.MiscUtil.interpretRecipient;
8384
import static org.simplejavamail.internal.util.MiscUtil.randomCid10;
8485
import static org.simplejavamail.internal.util.MiscUtil.readInputStreamToBytes;
8586
import static org.simplejavamail.internal.util.MiscUtil.tryResolveFileDataSourceFromClassPath;
@@ -527,8 +528,9 @@ public EmailPopulatingBuilder from(@NotNull final String fromAddress) {
527528
* @see EmailPopulatingBuilder#from(String, String)
528529
*/
529530
@Override
530-
public EmailPopulatingBuilder from(@Nullable final String name, @NotNull final String fromAddress) {
531-
return from(new Recipient(name, checkNonEmptyArgument(fromAddress, "fromAddress"), null));
531+
public EmailPopulatingBuilder from(@Nullable final String fixedName, @NotNull final String fromAddress) {
532+
checkNonEmptyArgument(fromAddress, "fromAddress");
533+
return from(interpretRecipient(fixedName, true, fromAddress, null));
532534
}
533535

534536
/**
@@ -565,7 +567,7 @@ public EmailPopulatingBuilder from(@NotNull final Recipient recipient) {
565567
@Override
566568
@Cli.ExcludeApi(reason = "API is subset of another API")
567569
public EmailPopulatingBuilder withReplyTo(@NotNull final String replyToAddress) {
568-
return withReplyTo(new Recipient(null, replyToAddress, null));
570+
return withReplyTo(interpretRecipient(null, false, replyToAddress, null));
569571
}
570572

571573
/**
@@ -574,7 +576,7 @@ public EmailPopulatingBuilder withReplyTo(@NotNull final String replyToAddress)
574576
@Override
575577
public EmailPopulatingBuilder withReplyTo(@Nullable final String fixedName, @NotNull final String replyToAddress) {
576578
checkNonEmptyArgument(replyToAddress, "replyToAddress");
577-
return withReplyTo(new Recipient(fixedName, replyToAddress, null));
579+
return withReplyTo(interpretRecipient(fixedName, true, replyToAddress, null));
578580
}
579581

580582
/**
@@ -621,15 +623,16 @@ public EmailPopulatingBuilder withReplyTo(@NotNull final List<Recipient> recipie
621623
@Override
622624
@Cli.ExcludeApi(reason = "API is subset of another API")
623625
public EmailPopulatingBuilder withBounceTo(@Nullable final String bounceToAddress) {
624-
return withBounceTo(bounceToAddress != null ? new Recipient(null, bounceToAddress, null) : null);
626+
return withBounceTo(bounceToAddress != null ? interpretRecipient(null, false, bounceToAddress, null) : null);
625627
}
626628

627629
/**
628630
* @see EmailPopulatingBuilder#withBounceTo(String, String)
629631
*/
630632
@Override
631633
public EmailPopulatingBuilder withBounceTo(@Nullable final String name, @NotNull final String bounceToAddress) {
632-
return withBounceTo(new Recipient(name, checkNonEmptyArgument(bounceToAddress, "bounceToAddress"), null));
634+
checkNonEmptyArgument(bounceToAddress, "bounceToAddress");
635+
return withBounceTo(interpretRecipient(name, true, bounceToAddress, null));
633636
}
634637

635638
/**
@@ -1984,7 +1987,7 @@ public EmailPopulatingBuilder withDispositionNotificationTo() {
19841987
@Cli.ExcludeApi(reason = "API is subset of another API")
19851988
public EmailPopulatingBuilder withDispositionNotificationTo(@NotNull final String address) {
19861989
checkNonEmptyArgument(address, "dispositionNotificationToAddress");
1987-
return withDispositionNotificationTo(new Recipient(null, address, null));
1990+
return withDispositionNotificationTo(interpretRecipient(null, false, address, null));
19881991
}
19891992

19901993
/**
@@ -1993,7 +1996,7 @@ public EmailPopulatingBuilder withDispositionNotificationTo(@NotNull final Strin
19931996
@Override
19941997
public EmailPopulatingBuilder withDispositionNotificationTo(@Nullable final String name, @NotNull final String address) {
19951998
checkNonEmptyArgument(address, "dispositionNotificationToAddress");
1996-
return withDispositionNotificationTo(new Recipient(name, address, null));
1999+
return withDispositionNotificationTo(interpretRecipient(name, true, address, null));
19972000
}
19982001

19992002
/**
@@ -2043,7 +2046,7 @@ public EmailPopulatingBuilder withReturnReceiptTo() {
20432046
@Cli.ExcludeApi(reason = "API is subset of another API")
20442047
public EmailPopulatingBuilder withReturnReceiptTo(@NotNull final String address) {
20452048
checkNonEmptyArgument(address, "address");
2046-
return withReturnReceiptTo(new Recipient(null, address, null));
2049+
return withReturnReceiptTo(interpretRecipient(null, false, address, null));
20472050
}
20482051

20492052
/**
@@ -2052,7 +2055,7 @@ public EmailPopulatingBuilder withReturnReceiptTo(@NotNull final String address)
20522055
@Override
20532056
public EmailPopulatingBuilder withReturnReceiptTo(@Nullable final String name, @NotNull final String address) {
20542057
checkNonEmptyArgument(address, "address");
2055-
return withReturnReceiptTo(new Recipient(name, address, null));
2058+
return withReturnReceiptTo(interpretRecipient(name, true, address, null));
20562059
}
20572060

20582061
/**

modules/simple-java-mail/src/test/java/org/simplejavamail/converter/EmailConverterTest.java

+12
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,18 @@ public void testOutlookBasicConversionsGithubIssue482() {
6666
EmailAssert.assertThat(msg).hasNoAttachments();
6767
}
6868

69+
@Test
70+
public void testOutlookBasicConversionsGithubIssue484() {
71+
final Recipient ramonFrom = new Recipient("Boss Ramon", "[email protected]", null);
72+
final Recipient ramonTo = new Recipient("Boss Ramon", "[email protected]", TO);
73+
74+
@NotNull Email msg = EmailConverter.outlookMsgToEmail(new File(RESOURCE_TEST_MESSAGES + "/#484 Email with problematic disposition_notification_to.msg"));
75+
EmailAssert.assertThat(msg).hasFromRecipient(ramonFrom);
76+
EmailAssert.assertThat(msg).hasSubject("subject");
77+
EmailAssert.assertThat(msg).hasOnlyRecipients(ramonTo);
78+
EmailAssert.assertThat(msg).hasDispositionNotificationTo(ramonFrom);
79+
}
80+
6981
@Test
7082
public void testOutlookUnicode() {
7183
final Recipient kalejs = new Recipient("[email protected]", "[email protected]", null);

0 commit comments

Comments
 (0)