How to check JavaMailSender Spring

I have a service that introduced JavaMailSender. My service sets it up and sends mail. I would like to intercept the raw mail to make sure the information is correct. I would like to do this in JUnit.

How do you guys do this?

@Service public class MyServiceImpl { @Autowired private JavaMailSender _mailSender; public void sendMail(String to, String body, String subject){ ... _mailSender.something ... } } 
+8
java spring java-ee character-encoding javamail
source share
2 answers

I did this using GreenMail . Take a look at my blog post about this , where you will also find a working example.

+17
source share

You can use a test SMTP server like Dumbster . See the example below:

 @Test public void sendSimpleEmailWithCC() { // Runs a Dumbster simple SMTP server - default config SimpleSmtpServer server = SimpleSmtpServer.start(); String from = "whoever@from.com"; String to = "whoever@to.com"; String messageText = "Good message"; String title = "Test message"; String cc = "whoever@cc.com"; Assert.assertTrue(mailSender .sendEmail(from, to, cc, title, messageText)); server.stop(); Assert.assertTrue(server.getReceivedEmailSize() == 1); Iterator emailIter = server.getReceivedEmail(); SmtpMessage email = (SmtpMessage) emailIter.next(); Assert.assertTrue(email.getHeaderValue("From").equals(from)); Assert.assertTrue(email.getHeaderValue("To").equals(to)); Assert.assertTrue(email.getHeaderValue("Cc").equals(cc)); Assert.assertTrue(email.getHeaderValue("Subject") .equals("Test message")); Assert.assertTrue(email.getBody().equals(messageText)); } 
+4
source share

All Articles