Skip to content

Commit 544edf2

Browse files
bael-8311: implementation (#17115)
* bael-8311: implementation * feedback --------- Co-authored-by: technoddy <[email protected]>
1 parent 2f70c5a commit 544edf2

File tree

2 files changed

+62
-25
lines changed

2 files changed

+62
-25
lines changed

core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,29 +42,41 @@ public EmailService(String host, int port) {
4242

4343
public static void main(String... args) {
4444
try {
45-
new EmailService("smtp.mailtrap.io", 25, "87ba3d9555fae8", "91cb4379af43ed")
46-
.sendMail();
45+
new EmailService("smtp.mailtrap.io", 25, "87ba3d9555fae8", "91cb4379af43ed").sendMail();
4746
} catch (Exception e) {
4847
e.printStackTrace();
4948
}
5049
}
5150

5251
public void sendMail() throws Exception {
5352

54-
Session session = Session.getInstance(prop, new Authenticator() {
55-
@Override
56-
protected PasswordAuthentication getPasswordAuthentication() {
57-
return new PasswordAuthentication(username, password);
58-
}
59-
});
53+
Session session = getSession();
6054

6155
Message message = new MimeMessage(session);
6256
message.setFrom(new InternetAddress("[email protected]"));
6357
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
6458
message.setSubject("Mail Subject");
59+
String msg = "This is my first email using JavaMailer";
60+
message.setContent(getMultipart(msg));
6561

62+
Transport.send(message);
63+
}
64+
65+
public void sendMailToMultipleRecipients() throws Exception {
66+
Session session = getSession();
67+
68+
Message message = new MimeMessage(session);
69+
message.setFrom(new InternetAddress("[email protected]"));
70+
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected], [email protected]"));
71+
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected], [email protected]"));
72+
message.setSubject("Mail Subject");
6673
String msg = "This is my first email using JavaMailer";
74+
message.setContent(getMultipart(msg));
75+
76+
Transport.send(message);
77+
}
6778

79+
private Multipart getMultipart(String msg) throws Exception {
6880
MimeBodyPart mimeBodyPart = new MimeBodyPart();
6981
mimeBodyPart.setContent(msg, "text/html; charset=utf-8");
7082

@@ -80,17 +92,24 @@ protected PasswordAuthentication getPasswordAuthentication() {
8092
multipart.addBodyPart(mimeBodyPart);
8193
multipart.addBodyPart(mimeBodyPartWithStyledText);
8294
multipart.addBodyPart(attachmentBodyPart);
95+
return multipart;
96+
}
8397

84-
message.setContent(multipart);
85-
86-
Transport.send(message);
98+
private Session getSession() {
99+
Session session = Session.getInstance(prop, new Authenticator() {
100+
@Override
101+
protected PasswordAuthentication getPasswordAuthentication() {
102+
return new PasswordAuthentication(username, password);
103+
}
104+
});
105+
return session;
87106
}
88107

89108
private File getFile() throws Exception {
90109
URI uri = this.getClass()
91-
.getClassLoader()
92-
.getResource("attachment.txt")
93-
.toURI();
110+
.getClassLoader()
111+
.getResource("attachment.txt")
112+
.toURI();
94113
return new File(uri);
95114
}
96115

core-java-modules/core-java-networking-2/src/test/java/com/baeldung/mail/EmailServiceLiveTest.java

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.baeldung.mail;
22

3+
import static org.junit.Assert.assertArrayEquals;
34
import static org.junit.Assert.assertEquals;
45

56
import java.io.IOException;
@@ -11,7 +12,9 @@
1112
import com.icegreen.greenmail.junit.GreenMailRule;
1213
import com.icegreen.greenmail.util.ServerSetupTest;
1314

15+
import jakarta.mail.Address;
1416
import jakarta.mail.MessagingException;
17+
import jakarta.mail.internet.InternetAddress;
1518
import jakarta.mail.internet.MimeMessage;
1619
import jakarta.mail.internet.MimeMultipart;
1720

@@ -24,7 +27,8 @@ public class EmailServiceLiveTest {
2427

2528
@Before
2629
public void setup() {
27-
emailService = new EmailService("localhost", greenMail.getSmtp().getPort());
30+
emailService = new EmailService("localhost", greenMail.getSmtp()
31+
.getPort());
2832
}
2933

3034
@Test
@@ -42,29 +46,43 @@ public void givenEmailMessageWithAttachment_whenEmailIsSent_MessageIsReceived()
4246
assertEquals("sample attachment content", attachmentContentsFrom(receivedMessage));
4347
}
4448

49+
@Test
50+
public void givenEmailMessageWithMultipleRecipients_whenEmailIsSent_AllRecipientReceivedMessage() throws Exception {
51+
emailService.sendMailToMultipleRecipients();
52+
53+
MimeMessage[] receivedMessages = greenMail.getReceivedMessages();
54+
assertEquals(4, receivedMessages.length);
55+
56+
for (MimeMessage mimeMessage : receivedMessages) {
57+
Address[] recipients = new Address[4];
58+
recipients[0] = new InternetAddress("[email protected]");
59+
recipients[1] = new InternetAddress("[email protected]");
60+
recipients[2] = new InternetAddress("[email protected]");
61+
recipients[3] = new InternetAddress("[email protected]");
62+
assertArrayEquals(recipients, mimeMessage.getAllRecipients());
63+
}
64+
}
65+
4566
private static String subjectFromMessage(MimeMessage receivedMessage) throws MessagingException {
4667
return receivedMessage.getSubject();
4768
}
4869

4970
private static String emailTextFrom(MimeMessage receivedMessage) throws IOException, MessagingException {
50-
return ((MimeMultipart) receivedMessage.getContent())
51-
.getBodyPart(0)
52-
.getContent()
53-
.toString();
71+
return ((MimeMultipart) receivedMessage.getContent()).getBodyPart(0)
72+
.getContent()
73+
.toString();
5474
}
5575

5676
private static String emailStyledTextFrom(MimeMessage receivedMessage) throws IOException, MessagingException {
57-
return ((MimeMultipart) receivedMessage.getContent())
58-
.getBodyPart(1)
77+
return ((MimeMultipart) receivedMessage.getContent()).getBodyPart(1)
5978
.getContent()
6079
.toString();
6180
}
6281

6382
private static String attachmentContentsFrom(MimeMessage receivedMessage) throws Exception {
64-
return ((MimeMultipart) receivedMessage.getContent())
65-
.getBodyPart(2)
66-
.getContent()
67-
.toString();
83+
return ((MimeMultipart) receivedMessage.getContent()).getBodyPart(2)
84+
.getContent()
85+
.toString();
6886
}
6987

7088
}

0 commit comments

Comments
 (0)