1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.mail2.jakarta;
18
19 import java.io.File;
20 import java.io.IOException;
21 import java.net.URL;
22
23 import org.apache.commons.mail2.core.EmailConstants;
24 import org.apache.commons.mail2.core.EmailException;
25 import org.apache.commons.mail2.jakarta.mocks.MockHtmlEmailConcrete;
26 import org.apache.commons.mail2.jakarta.settings.EmailConfiguration;
27 import org.junit.jupiter.api.BeforeEach;
28 import org.junit.jupiter.api.Test;
29
30 import jakarta.mail.internet.MimeUtility;
31
32
33
34
35 public class SendWithAttachmentsTest extends AbstractEmailTest {
36 private MockHtmlEmailConcrete email;
37
38 @BeforeEach
39 public void setUpSendWithAttachmentsTest() {
40
41 email = new MockHtmlEmailConcrete();
42 }
43
44
45
46
47
48 @Test
49 public void testSendNoAttachments() throws EmailException, IOException {
50 getMailServer();
51
52 final String strSubject = "Test HTML Send #1 Subject (w charset)";
53
54 email = new MockHtmlEmailConcrete();
55 email.setHostName(strTestMailServer);
56 email.setSmtpPort(getMailServerPort());
57 email.setFrom(strTestMailFrom);
58 email.addTo(strTestMailTo);
59
60 email.setAuthentication(strTestUser, strTestPasswd);
61
62 email.setCharset(EmailConstants.ISO_8859_1);
63 email.setSubject(strSubject);
64
65 final URL url = new URL(EmailConfiguration.TEST_URL);
66 final String cid = email.embed(url, "Apache Logo");
67
68 final String strHtmlMsg = "<html>The Apache logo - <img src=\"cid:" + cid + "\"><html>";
69
70 email.setHtmlMsg(strHtmlMsg);
71 email.setTextMsg("Your email client does not support HTML emails");
72
73 email.send();
74 fakeMailServer.stop();
75
76
77 validateSend(fakeMailServer, strSubject, email.getText(), email.getFromAddress(), email.getToAddresses(), email.getCcAddresses(),
78 email.getBccAddresses(), true);
79
80
81 validateSend(fakeMailServer, strSubject, email.getHtml(), email.getFromAddress(), email.getToAddresses(), email.getCcAddresses(),
82 email.getBccAddresses(), false);
83 }
84
85
86
87
88
89 @Test
90 public void testSendWAttachments() throws EmailException, IOException {
91 final EmailAttachment attachment = new EmailAttachment();
92
93
94 final File testFile = File.createTempFile("commons-email-testfile", ".txt");
95
96 getMailServer();
97
98 final String strSubject = "Test HTML Send #1 Subject (w charset)";
99
100 email = new MockHtmlEmailConcrete();
101 email.setHostName(strTestMailServer);
102 email.setSmtpPort(getMailServerPort());
103 email.setFrom(strTestMailFrom);
104 email.addTo(strTestMailTo);
105
106
107
108
109 attachment.setName("a>ä, o>ö, u>ü, au>äu");
110 attachment.setDescription("Test Attachment Desc");
111 attachment.setPath(testFile.getAbsolutePath());
112 email.attach(attachment);
113
114 email.setAuthentication(strTestUser, strTestPasswd);
115
116 email.setCharset(EmailConstants.ISO_8859_1);
117 email.setSubject(strSubject);
118
119 final String strHtmlMsg = "<html>Test Message<html>";
120
121 email.setHtmlMsg(strHtmlMsg);
122 email.setTextMsg("Your email client does not support HTML emails");
123
124 email.send();
125 fakeMailServer.stop();
126
127 validateSend(fakeMailServer, strSubject, email.getText(), email.getFromAddress(), email.getToAddresses(), email.getCcAddresses(),
128 email.getBccAddresses(), true);
129
130
131 validateSend(fakeMailServer, strSubject, email.getHtml(), email.getFromAddress(), email.getToAddresses(), email.getCcAddresses(),
132 email.getBccAddresses(), false);
133
134
135 validateSend(fakeMailServer, strSubject, MimeUtility.encodeText(attachment.getName()), email.getFromAddress(), email.getToAddresses(),
136 email.getCcAddresses(), email.getBccAddresses(), false);
137 }
138
139 }