Skip to content

Commit 1f46858

Browse files
committed
switched to recipient-type specific setters
1 parent 2a1c7e2 commit 1f46858

File tree

5 files changed

+94
-107
lines changed

5 files changed

+94
-107
lines changed

src/main/java/org/simplejavamail/converter/EmailConverter.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import javax.activation.DataSource;
1414
import javax.annotation.Nonnull;
15-
import javax.mail.Message;
1615
import javax.mail.MessagingException;
1716
import javax.mail.Session;
1817
import javax.mail.internet.AddressException;
@@ -247,14 +246,14 @@ private static void fillEmailFromMimeMessage(@Nonnull final Email email, @Nonnul
247246
}
248247
}
249248
for (final InternetAddress to : parser.getTo()) {
250-
email.addNamedRecipient(to.getPersonal(), Message.RecipientType.TO, to.getAddress());
249+
email.addNamedToRecipients(to.getPersonal(), to.getAddress());
251250
}
252251
//noinspection QuestionableName
253252
for (final InternetAddress cc : parser.getCc()) {
254-
email.addNamedRecipient(cc.getPersonal(), Message.RecipientType.CC, cc.getAddress());
253+
email.addNamedCcRecipients(cc.getPersonal(), cc.getAddress());
255254
}
256255
for (final InternetAddress bcc : parser.getBcc()) {
257-
email.addNamedRecipient(bcc.getPersonal(), Message.RecipientType.BCC, bcc.getAddress());
256+
email.addNamedBccRecipients(bcc.getPersonal(), bcc.getAddress());
258257
}
259258
email.setSubject(parser.getSubject());
260259
email.setText(parser.getPlainContent());
@@ -291,14 +290,14 @@ private static void fillEmailFromOutlookMessage(@Nonnull final Email email, @Non
291290
email.setReplyToAddress(outlookMessage.getReplyToName(), outlookMessage.getReplyToEmail());
292291
}
293292
for (final OutlookRecipient to : outlookMessage.getRecipients()) {
294-
email.addNamedRecipient(to.getName(), Message.RecipientType.TO, to.getAddress());
293+
email.addNamedToRecipients(to.getName(), to.getAddress());
295294
}
296295
//noinspection QuestionableName
297296
for (final OutlookRecipient cc : outlookMessage.getCcRecipients()) {
298-
email.addNamedRecipient(cc.getName(), Message.RecipientType.CC, cc.getAddress());
297+
email.addNamedCcRecipients(cc.getName(), cc.getAddress());
299298
}
300299
for (final OutlookRecipient bcc : outlookMessage.getBccRecipients()) {
301-
email.addNamedRecipient(bcc.getName(), Message.RecipientType.BCC, bcc.getAddress());
300+
email.addNamedBccRecipients(bcc.getName(), bcc.getAddress());
302301
}
303302
email.setSubject(outlookMessage.getSubject());
304303
email.setText(outlookMessage.getBodyText());

src/main/java/org/simplejavamail/email/Email.java

Lines changed: 50 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -158,23 +158,23 @@ public Email(final boolean readFromDefaults) {
158158
}
159159
if (hasProperty(DEFAULT_TO_ADDRESS)) {
160160
if (hasProperty(DEFAULT_TO_NAME)) {
161-
addNamedRecipient((String) getProperty(DEFAULT_TO_NAME), RecipientType.TO, (String) getProperty(DEFAULT_TO_ADDRESS));
161+
addNamedToRecipients((String) getProperty(DEFAULT_TO_NAME), (String) getProperty(DEFAULT_TO_ADDRESS));
162162
} else {
163-
addNamedRecipients((String) getProperty(DEFAULT_TO_ADDRESS), RecipientType.TO);
163+
addToRecipients((String) getProperty(DEFAULT_TO_ADDRESS));
164164
}
165165
}
166166
if (hasProperty(DEFAULT_CC_ADDRESS)) {
167167
if (hasProperty(DEFAULT_CC_NAME)) {
168-
addNamedRecipient((String) getProperty(DEFAULT_CC_NAME), RecipientType.CC, (String) getProperty(DEFAULT_CC_ADDRESS));
168+
addNamedCcRecipients((String) getProperty(DEFAULT_CC_NAME), (String) getProperty(DEFAULT_CC_ADDRESS));
169169
} else {
170-
addNamedRecipients((String) getProperty(DEFAULT_CC_ADDRESS), RecipientType.CC);
170+
addCcRecipients((String) getProperty(DEFAULT_CC_ADDRESS));
171171
}
172172
}
173173
if (hasProperty(DEFAULT_BCC_ADDRESS)) {
174174
if (hasProperty(DEFAULT_BCC_NAME)) {
175-
addNamedRecipient((String) getProperty(DEFAULT_BCC_NAME), RecipientType.BCC, (String) getProperty(DEFAULT_BCC_ADDRESS));
175+
addNamedBccRecipients((String) getProperty(DEFAULT_BCC_NAME), (String) getProperty(DEFAULT_BCC_ADDRESS));
176176
} else {
177-
addNamedRecipients((String) getProperty(DEFAULT_BCC_ADDRESS), RecipientType.BCC);
177+
addBccRecipients((String) getProperty(DEFAULT_BCC_ADDRESS));
178178
}
179179
}
180180
if (hasProperty(DEFAULT_SUBJECT)) {
@@ -314,23 +314,51 @@ public void setTextHTML(@Nullable final String textHTML) {
314314
}
315315

316316
/**
317-
* Delegates to {@link #addNamedRecipients(String, RecipientType, String...)}, parsing the delimited address list first (if more than one).
318-
* Identical to {@link #addNamedRecipients(String, RecipientType, String...)}, but kept for readability purposes.
317+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using empty default name and {@link RecipientType#TO}.
319318
*/
320-
public void addNamedRecipient(@Nullable final String name, @Nonnull final RecipientType type, @Nonnull final String emailAddressList) {
321-
checkNonEmptyArgument(type, "type");
322-
checkNonEmptyArgument(emailAddressList, "emailAddressList");
323-
addNamedRecipients(name, type, emailAddressList);
319+
public void addToRecipients(@Nonnull final String... delimitedEmailAddresses) {
320+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
321+
addRecipients(null, RecipientType.TO, delimitedEmailAddresses);
324322
}
325-
323+
326324
/**
327-
* Delegates to {@link #addNamedRecipients(String, RecipientType, String...)}, parsing the delimited address list first (if more than one).
328-
* Identical to {@link #addNamedRecipients(String, RecipientType, String...)}, but kept for readability purposes.
325+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using empty default name and {@link RecipientType#CC}.
329326
*/
330-
public void addRecipients(@Nonnull final RecipientType type, @Nonnull final String... recipientEmailAddressesToAdd) {
331-
checkNonEmptyArgument(type, "type");
332-
checkNonEmptyArgument(recipientEmailAddressesToAdd, "recipientEmailAddressesToAdd");
333-
addNamedRecipients(null, type, recipientEmailAddressesToAdd);
327+
public void addCcRecipients(@Nonnull final String... delimitedEmailAddresses) {
328+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
329+
addRecipients(null, RecipientType.CC, delimitedEmailAddresses);
330+
}
331+
332+
/**
333+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using empty default name and {@link RecipientType#BCC}.
334+
*/
335+
public void addBccRecipients(@Nonnull final String... delimitedEmailAddresses) {
336+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
337+
addRecipients(null, RecipientType.BCC, delimitedEmailAddresses);
338+
}
339+
340+
/**
341+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using {@link RecipientType#TO}.
342+
*/
343+
public void addNamedToRecipients(@Nullable final String name, @Nonnull final String... delimitedEmailAddresses) {
344+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
345+
addRecipients(name, RecipientType.TO, delimitedEmailAddresses);
346+
}
347+
348+
/**
349+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using {@link RecipientType#CC}.
350+
*/
351+
public void addNamedCcRecipients(@Nullable final String name, @Nonnull final String... delimitedEmailAddresses) {
352+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
353+
addRecipients(name, RecipientType.CC, delimitedEmailAddresses);
354+
}
355+
356+
/**
357+
* Delegates to {@link #addRecipients(String, RecipientType, String...)}, using {@link RecipientType#BCC}.
358+
*/
359+
public void addNamedBccRecipients(@Nullable final String name, @Nonnull final String... delimitedEmailAddresses) {
360+
checkNonEmptyArgument(delimitedEmailAddresses, "emailAddressList");
361+
addRecipients(name, RecipientType.BCC, delimitedEmailAddresses);
334362
}
335363

336364
/**
@@ -339,13 +367,13 @@ public void addRecipients(@Nonnull final RecipientType type, @Nonnull final Stri
339367
* Email address can be of format {@code "[email protected][,;*]"} or {@code "Recipient Name <[email protected]>[,;*]"}. Included names would
340368
* override the default recipientName provided.
341369
*
342-
* @param recipientName The name to use for each email address in the {@code recipientEmailAddressesToAdd}.
343-
* @param recipientEmailAddressesToAdd List of preconfigured recipients (with or without names, overriding the default if included).
370+
* @param recipientName The optional name to use for each email address in the {@code recipientEmailAddressesToAdd}.
371+
* @param recipientEmailAddressesToAdd List of (preconfigured) recipients (with or without names, overriding the default name if included).
344372
* @see #recipients
345373
* @see Recipient
346374
* @see RecipientType
347375
*/
348-
public void addNamedRecipients(@Nullable final String recipientName, @Nonnull final RecipientType type, @Nonnull final String... recipientEmailAddressesToAdd) {
376+
public void addRecipients(@Nullable final String recipientName, @Nonnull final RecipientType type, @Nonnull final String... recipientEmailAddressesToAdd) {
349377
checkNonEmptyArgument(type, "type");
350378
checkNonEmptyArgument(recipientEmailAddressesToAdd, "recipientEmailAddressesToAdd");
351379
for (final String potentiallyCombinedEmailAddress : recipientEmailAddressesToAdd) {

src/test/java/demo/MailTestApp.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.simplejavamail.mailer.config.TransportStrategy;
88
import testutil.ConfigLoaderTestHelper;
99

10-
import javax.mail.Message.RecipientType;
1110
import javax.mail.internet.MimeMessage;
1211
import javax.mail.util.ByteArrayDataSource;
1312
import java.nio.charset.Charset;
@@ -45,7 +44,7 @@ public static void main(final String[] args)
4544
final Email emailNormal = new Email();
4645
emailNormal.setFromAddress("lollypop", "[email protected]");
4746
// don't forget to add your own address here ->
48-
emailNormal.addNamedRecipient("C.Cane", RecipientType.TO, YOUR_GMAIL_ADDRESS);
47+
emailNormal.addNamedToRecipients("C.Cane", YOUR_GMAIL_ADDRESS);
4948
emailNormal.setText("We should meet up!");
5049
emailNormal.setTextHTML("<b>We should meet up!</b><img src='cid:thumbsup'>");
5150
emailNormal.setSubject("hey");

src/test/java/org/simplejavamail/email/EmailTest.java

Lines changed: 36 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -18,50 +18,12 @@ public void setup() throws Exception {
1818
email = new Email();
1919
}
2020

21-
@Test
22-
public void testAddRecipient_Basic_Named() {
23-
email.addNamedRecipient("name1", TO, "[email protected]");
24-
email.addNamedRecipient("name2", CC, "[email protected],[email protected]");
25-
email.addNamedRecipient("name3", BCC, "[email protected];[email protected]");
26-
email.addNamedRecipient("name4", TO, "[email protected];[email protected],[email protected]");
27-
28-
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
29-
new Recipient("name1", "[email protected]", TO),
30-
new Recipient("name2", "[email protected]", CC),
31-
new Recipient("name2", "[email protected]", CC),
32-
new Recipient("name3", "[email protected]", BCC),
33-
new Recipient("name3", "[email protected]", BCC),
34-
new Recipient("name4", "[email protected]", TO),
35-
new Recipient("name4", "[email protected]", TO),
36-
new Recipient("name4", "[email protected]", TO)
37-
);
38-
}
39-
40-
@Test
41-
public void testAddRecipient_Complex_Named() {
42-
email.addNamedRecipient("name1", TO, "name1b <[email protected]>");
43-
email.addNamedRecipient("name2", CC, "name2b <[email protected]>,[email protected]");
44-
email.addNamedRecipient("name3", BCC, "[email protected];name3b <[email protected]>");
45-
email.addNamedRecipient("name4", TO, "name4b <[email protected]>;name5b <[email protected]>,name6b <[email protected]>");
46-
47-
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
48-
new Recipient("name1b", "[email protected]", TO),
49-
new Recipient("name2b", "[email protected]", CC),
50-
new Recipient("name2", "[email protected]", CC),
51-
new Recipient("name3", "[email protected]", BCC),
52-
new Recipient("name3b", "[email protected]", BCC),
53-
new Recipient("name4b", "[email protected]", TO),
54-
new Recipient("name5b", "[email protected]", TO),
55-
new Recipient("name6b", "[email protected]", TO)
56-
);
57-
}
58-
5921
@Test
6022
public void testAddRecipients_Basic_Named() {
61-
email.addNamedRecipients("name1", TO, "[email protected]");
62-
email.addNamedRecipients("name2", CC, "[email protected],[email protected]");
63-
email.addNamedRecipients("name3", BCC, "[email protected];[email protected]");
64-
email.addNamedRecipients("name4", TO, "[email protected];[email protected],[email protected]");
23+
email.addNamedToRecipients("name1", "[email protected]");
24+
email.addNamedCcRecipients("name2", "[email protected],[email protected]");
25+
email.addNamedBccRecipients("name3", "[email protected];[email protected]");
26+
email.addNamedToRecipients("name4", "[email protected];[email protected],[email protected]");
6527

6628
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
6729
new Recipient("name1", "[email protected]", TO),
@@ -77,10 +39,10 @@ public void testAddRecipients_Basic_Named() {
7739

7840
@Test
7941
public void testAddRecipients_Complex_Named() {
80-
email.addNamedRecipients("name1", TO, "name1b <[email protected]>");
81-
email.addNamedRecipients("name2", CC, "name2b <[email protected]>,[email protected]");
82-
email.addNamedRecipients("name3", BCC, "[email protected];name3b <[email protected]>");
83-
email.addNamedRecipients("name4", TO, "name4b <[email protected]>;name5b <[email protected]>,name6b <[email protected]>");
42+
email.addNamedToRecipients("name1", "name1b <[email protected]>");
43+
email.addNamedCcRecipients("name2", "name2b <[email protected]>,[email protected]");
44+
email.addNamedBccRecipients("name3", "[email protected];name3b <[email protected]>");
45+
email.addNamedToRecipients("name4", "name4b <[email protected]>;name5b <[email protected]>,name6b <[email protected]>");
8446

8547
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
8648
new Recipient("name1b", "[email protected]", TO),
@@ -96,8 +58,8 @@ public void testAddRecipients_Complex_Named() {
9658

9759
@Test
9860
public void testAddRecipientsVarArgs_Basic_Named() {
99-
email.addNamedRecipients("name1", TO, "[email protected]");
100-
email.addNamedRecipients("name2", CC, "[email protected]", "[email protected]");
61+
email.addNamedToRecipients("name1", "[email protected]");
62+
email.addNamedCcRecipients("name2", "[email protected]", "[email protected]");
10163

10264
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
10365
new Recipient("name1", "[email protected]", TO),
@@ -108,8 +70,8 @@ public void testAddRecipientsVarArgs_Basic_Named() {
10870

10971
@Test
11072
public void testAddRecipientsVarArgs_Complex_Named() {
111-
email.addNamedRecipients("name1", TO, "name1b <[email protected]>");
112-
email.addNamedRecipients("name2", CC, "name2b <[email protected]>", "name3b <[email protected]>");
73+
email.addNamedToRecipients("name1", "name1b <[email protected]>");
74+
email.addNamedCcRecipients("name2", "name2b <[email protected]>", "name3b <[email protected]>");
11375

11476
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
11577
new Recipient("name1b", "[email protected]", TO),
@@ -120,8 +82,8 @@ public void testAddRecipientsVarArgs_Complex_Named() {
12082

12183
@Test
12284
public void testAddRecipientsVarArgs_Basic_Nameless() {
123-
email.addRecipients(TO, "[email protected]");
124-
email.addRecipients(CC, "[email protected]", "[email protected]");
85+
email.addToRecipients("[email protected]");
86+
email.addCcRecipients("[email protected]", "[email protected]");
12587

12688
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
12789
new Recipient(null, "[email protected]", TO),
@@ -132,8 +94,8 @@ public void testAddRecipientsVarArgs_Basic_Nameless() {
13294

13395
@Test
13496
public void testAddRecipientsVarArgs_Complex_Nameless() {
135-
email.addRecipients(TO, "name1b <[email protected]>");
136-
email.addRecipients(CC, "name2b <[email protected]>", "name3b <[email protected]>");
97+
email.addToRecipients("name1b <[email protected]>");
98+
email.addCcRecipients("name2b <[email protected]>", "name3b <[email protected]>");
13799

138100
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
139101
new Recipient("name1b", "[email protected]", TO),
@@ -144,10 +106,10 @@ public void testAddRecipientsVarArgs_Complex_Nameless() {
144106

145107
@Test
146108
public void testAddRecipients_Basic_Nameless() {
147-
email.addRecipients(TO, "[email protected]");
148-
email.addRecipients(CC, "[email protected],[email protected]");
149-
email.addRecipients(BCC, "[email protected];[email protected]");
150-
109+
email.addToRecipients("[email protected]");
110+
email.addCcRecipients("[email protected],[email protected]");
111+
email.addBccRecipients("[email protected];[email protected]");
112+
151113

152114
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
153115
new Recipient(null, "[email protected]", TO),
@@ -163,10 +125,10 @@ public void testAddRecipients_Basic_Nameless() {
163125

164126
@Test
165127
public void testAddRecipients_Complex_Nameless() {
166-
email.addRecipients(TO, "name1b <[email protected]>");
167-
email.addRecipients(CC, "name2b <[email protected]>,[email protected]");
168-
email.addRecipients(BCC, "[email protected];name3b <[email protected]>");
169-
email.addRecipients(TO, "name4b <[email protected]>;name5b <[email protected]>,name6b <[email protected]>");
128+
email.addToRecipients("name1b <[email protected]>");
129+
email.addCcRecipients("name2b <[email protected]>,[email protected]");
130+
email.addBccRecipients("[email protected];name3b <[email protected]>");
131+
email.addToRecipients("name4b <[email protected]>;name5b <[email protected]>,name6b <[email protected]>");
170132

171133
assertThat(email.getRecipients()).containsExactlyInAnyOrder(
172134
new Recipient("name1b", "[email protected]", TO),
@@ -183,25 +145,25 @@ public void testAddRecipients_Complex_Nameless() {
183145
@Test
184146
public void testAddRecipients_Complex_Quicktest() {
185147
// accept valid addresses:
186-
email.addRecipients(TO, "Abc\\@[email protected]");
187-
email.addRecipients(TO, "Fred\\ [email protected]");
188-
email.addRecipients(TO, "Joe.\\\\[email protected]");
189-
email.addRecipients(TO, "\"Abc@def\"@example.com");
190-
email.addRecipients(TO, "\"Fred Bloggs\"@example.com");
191-
email.addRecipients(TO, "customer/[email protected]");
192-
email.addRecipients(TO, "[email protected]");
193-
email.addRecipients(TO, "!def!xyz%[email protected]");
194-
email.addRecipients(TO, "[email protected]");
195-
email.addRecipients(TO, "very.“():[]”.VERY.“very@\\\\ \"very”[email protected]");
148+
email.addToRecipients("Abc\\@[email protected]");
149+
email.addToRecipients("Fred\\ [email protected]");
150+
email.addToRecipients("Joe.\\\\[email protected]");
151+
email.addToRecipients("\"Abc@def\"@example.com");
152+
email.addToRecipients("\"Fred Bloggs\"@example.com");
153+
email.addToRecipients("customer/[email protected]");
154+
email.addToRecipients("[email protected]");
155+
email.addToRecipients("!def!xyz%[email protected]");
156+
email.addToRecipients("[email protected]");
157+
email.addToRecipients("very.“():[]”.VERY.“very@\\\\ \"very”[email protected]");
196158

197159
// even accept invalid addresses:
198-
email.addRecipients(TO, "Name <1@[email protected]>");
160+
email.addToRecipients("Name <1@[email protected]>");
199161

200162
// OK, InternetAddress#parse() didn't error out on these addresses
201163
}
202164

203165
@Test
204-
public void testAddRecipientByInternetAddress(){
166+
public void testAddRecipientByInternetAddress() {
205167
assertThat(Email.interpretRecipientData(null, "[email protected]", null)).isEqualTo(new Recipient(null, "[email protected]", null));
206168
assertThat(Email.interpretRecipientData(null, " [email protected] ", null)).isEqualTo(new Recipient(null, "[email protected]", null));
207169
assertThat(Email.interpretRecipientData(null, " <[email protected]> ", null)).isEqualTo(new Recipient(null, "[email protected]", null));

src/test/java/testutil/EmailHelper.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import java.io.InputStream;
1010
import java.nio.charset.Charset;
1111

12-
import static javax.mail.Message.RecipientType.TO;
1312
import static javax.xml.bind.DatatypeConverter.parseBase64Binary;
1413
import static org.simplejavamail.converter.EmailConverter.outlookMsgToEmail;
1514

@@ -30,7 +29,7 @@ public static Email createDummyEmail(@Nullable String id, boolean includeSubject
3029
emailNormal.setReplyToAddress("lollypop-reply", "[email protected]");
3130
}
3231
// don't forget to add your own address here ->
33-
emailNormal.addNamedRecipient("C.Cane", TO, "[email protected]");
32+
emailNormal.addNamedToRecipients("C.Cane", "[email protected]");
3433
if (includeSubjectAndBody) {
3534
emailNormal.setSubject("hey");
3635
emailNormal.setText("We should meet up!");

0 commit comments

Comments
 (0)