package jodd.mail;
import com.icegreen.greenmail.util.GreenMail;
import com.icegreen.greenmail.util.ServerSetupTest;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
public class EmailGreenTest {
@Test
public void testInlineAttachmentAfterSending() {
GreenMail greenMail = new GreenMail(ServerSetupTest.ALL);
greenMail.setUser("green@mail.com", "green", "pwd");
greenMail.start();
// make
Email email = Email.create()
.from("Jodd", "jodd@use.me")
.to("green@mail.com")
.addText("Hello")
.addHtml("Hi!")
.attach(EmailAttachment.attachment()
.setName("one")
.bytes(new byte[]{7,8,9})
.setInline(false)
.create())
.attach(EmailAttachment.attachment()
.setName("two")
.bytes(new byte[]{4,5,6})
.setInline(false)
.create())
.attach(EmailAttachment.attachment()
.setName("three")
.bytes(new byte[]{1,2,3})
.setContentId("CID1").create())
.embed(EmailAttachment.attachment()
.bytes(new byte[]{0,1,0}))
;
assertEquals(4, email.getAttachments().size());
// send
{
SmtpServer smtpServer = new SmtpServer("localhost", 3025);
SendMailSession session = smtpServer.createSession();
session.open();
session.sendMail(email);
session.close();
}
// receive
ReceivedEmail[] receivedEmails;
{
Pop3Server popServer = new Pop3Server("localhost", 3110, "green", "pwd");
ReceiveMailSession session = popServer.createSession();
session.open();
receivedEmails = session.receiveEmail();
session.close();
}
assertEquals(1, receivedEmails.length);
ReceivedEmail liame = receivedEmails[0];
// asserts
assertEquals("Jodd <jodd@use.me>", email.getFrom().toString());
assertEquals("Jodd <jodd@use.me>", liame.getFrom().toString());
assertEquals("green@mail.com", email.getTo()[0].toString());
assertEquals("green@mail.com", liame.getTo()[0].toString());
assertEquals(4, email.getAttachments().size());
assertEquals("one", email.getAttachments().get(0).getName());
assertArrayEquals(new byte[]{7,8,9}, email.getAttachments().get(0).toByteArray());
assertEquals("two", email.getAttachments().get(1).getName());
assertArrayEquals(new byte[]{4,5,6}, email.getAttachments().get(1).toByteArray());
assertEquals("three", email.getAttachments().get(2).getName());
assertEquals("CID1", email.getAttachments().get(2).getContentId());
assertArrayEquals(new byte[]{1,2,3}, email.getAttachments().get(2).toByteArray());
assertTrue(email.getAttachments().get(2).isEmbedded());
assertNull(email.getAttachments().get(3).getName());
assertArrayEquals(new byte[]{0,1,0}, email.getAttachments().get(3).toByteArray());
assertFalse(email.getAttachments().get(3).isEmbedded());
assertEquals(4, liame.getAttachments().size());
int ndx = 1;
assertEquals("one", liame.getAttachments().get(ndx).getName());
assertArrayEquals(new byte[]{7,8,9}, liame.getAttachments().get(ndx).toByteArray());
ndx = 2;
assertEquals("two", liame.getAttachments().get(ndx).getName());
assertArrayEquals(new byte[]{4,5,6}, liame.getAttachments().get(ndx).toByteArray());
ndx = 3;
assertEquals("three", liame.getAttachments().get(ndx).getName());
assertEquals("<CID1>", liame.getAttachments().get(ndx).getContentId());
assertArrayEquals(new byte[]{1,2,3}, liame.getAttachments().get(ndx).toByteArray());
assertTrue(liame.getAttachments().get(ndx).isEmbedded());
ndx = 0;
assertNotNull(liame.getAttachments().get(ndx).getName());
assertArrayEquals(new byte[]{0,1,0}, liame.getAttachments().get(ndx).toByteArray());
assertFalse(liame.getAttachments().get(ndx).isEmbedded());
greenMail.stop();
}
}