Recently I'm looking for a possibility to test sending of mails in Java. For this use case you need a mocked SMTP server, which works like the Jetty ServletTester. The Dumbster Project offers a mocked SMTP server. The following example describes the usage:
public void testSendOrders() {
SimpleSmtpServer smtpServer = SimpleSmtpServer.start();
try {
sendMessagePerJavaMail(25, "order@developers-blog.org", "Order Number 1", "T-Shirt 123", "rafael.sobek@nirvana.org");
sendMessagePerJavaMail(25, "order@developers-blog.org", "Order Number 2", "T-Shirt 233", "rafael.sobek@nirvana.org");
} catch(Exception e) {
e.printStackTrace();
fail("Something was wrong: "+e);
}
smtpServer.stop();
assertTrue(server.getReceivedEmailSize() == 2);
Iterator emailIter = server.getReceivedEmail();
//first email
SmtpMessage email = (SmtpMessage)emailIter.next();
assertTrue(email.getHeaderValue("Subject").equals("Order Number 1"));
assertTrue(email.getBody().equals("T-Shirt 123"));
//second email
email = (SmtpMessage)emailIter.next();
assertTrue(email.getHeaderValue("Subject").equals("Order Number 2"));
assertTrue(email.getBody().equals("T-Shirt 233"));
}
RegardsRafael Sobek
