1 package net.jaekl.qd.util;
3 import static org.junit.Assert.*;
5 import java.nio.charset.Charset;
9 public class SendMailTest {
12 public void testRfc821Samples() throws MailException {
13 final String TYPICAL_INIT = "220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready";
14 final String[][] TYPICAL = {
29 "354 Start mail input; end with <CRLF>.<CRLF>"
37 "221 BBN-UNIX.ARPA Service closing transmission channel"
40 final String TYPICAL_SENT =
41 "MAIL FROM: tarzan@jane.net\r\n"
42 + "RCPT TO: jane@jane.net\r\n"
44 + "From: tarzan@jane.net\r\n"
45 + "To: jane@jane.net\r\n"
46 + "Subject: Me Tarzan, you Jane\r\n"
47 + "MIME-Version: 1.0\r\n"
48 + "Content-Type: multipart/mixed; boundary=\"snip_snip\"\r\n"
51 + "Content-Type: text/plain\r\n"
53 + "Tarzan like Jane\n"
54 + "Tarzan come see Jane soon\n"
64 + "<TITLE>Me Tarzan; you Jane\n</TITLE>"
67 + "<P>Tarzan like Jane.<BR/>Tarzan come see Jane soon.</P>\n"
71 final String HTML_SENT =
72 "MAIL FROM: tarzan@jane.net\r\n"
73 + "RCPT TO: jane@jane.net\r\n"
75 + "From: tarzan@jane.net\r\n"
76 + "To: jane@jane.net\r\n"
77 + "Subject: Me Tarzan, you Jane\r\n"
78 + "MIME-Version: 1.0\r\n"
79 + "Content-Type: multipart/mixed; boundary=\"snip_snip\"\r\n"
82 + "Content-Type: text/html\r\n"
85 + "\r\n\r\n--snip_snip--\r\n"
89 // Try sending a plain-text email
91 SmtpConversationMock conversat = new SmtpConversationMock(TYPICAL_INIT, TYPICAL);
92 SendMailMock smm = new SendMailMock(conversat);
94 smm.setFrom("tarzan@jane.net");
95 smm.addTo("jane@jane.net");
96 smm.setSubject("Me Tarzan, you Jane");
98 MimePart part = new MimePart("text/plain", "Tarzan like Jane\nTarzan come see Jane soon\n\nTarzan");
103 OutputStreamMock osm = conversat.getOutputStream();
104 String result = osm.mock_getContent(Charset.forName(FileMock.UTF_8));
106 int pos = result.indexOf("\r\n");
108 String afterHELO = result.substring(pos + 2);
110 assertTrue(result.startsWith("HELO "));
111 assertEquals(TYPICAL_SENT, afterHELO);
114 // Try sending an HTML email
116 SmtpConversationMock conversat = new SmtpConversationMock(TYPICAL_INIT, TYPICAL);
117 SendMailMock smm = new SendMailMock(conversat);
119 smm.setFrom("tarzan@jane.net");
120 smm.addTo("jane@jane.net");
121 smm.setSubject("Me Tarzan, you Jane");
123 MimePart part = new MimePart("text/html", HTML);
128 OutputStreamMock osm = conversat.getOutputStream();
129 String result = osm.mock_getContent(Charset.forName(FileMock.UTF_8));
131 int pos = result.indexOf("\r\n");
133 String afterHELO = result.substring(pos + 2);
135 assertTrue(result.startsWith("HELO "));
136 assertEquals(HTML_SENT, afterHELO);