/** * @param items the items to send * @see ItemWriter#write(List) */ @Override public void write(List<? extends SimpleMailMessage> items) throws MailException { try { mailSender.send(items.toArray(new SimpleMailMessage[items.size()])); } catch (MailSendException e) { Map<Object, Exception> failedMessages = e.getFailedMessages(); for (Entry<Object, Exception> entry : failedMessages.entrySet()) { mailErrorHandler.handle((SimpleMailMessage) entry.getKey(), entry.getValue()); } } }
/** * @param items the items to send * @see ItemWriter#write(List) */ @Override public void write(List<? extends MimeMessage> items) throws MailException { try { mailSender.send(items.toArray(new MimeMessage[items.size()])); } catch (MailSendException e) { Map<Object, Exception> failedMessages = e.getFailedMessages(); for (Entry<Object, Exception> entry : failedMessages.entrySet()) { mailErrorHandler.handle(new MimeMailMessage((MimeMessage)entry.getKey()), entry.getValue()); } } }
@Test public void failedMailServerConnect() { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost(null); sender.setUsername("username"); sender.setPassword("password"); SimpleMailMessage simpleMessage1 = new SimpleMailMessage(); try { sender.send(simpleMessage1); fail("Should have thrown MailSendException"); } catch (MailSendException ex) { // expected ex.printStackTrace(); assertTrue(ex.getFailedMessages() != null); assertEquals(1, ex.getFailedMessages().size()); assertSame(simpleMessage1, ex.getFailedMessages().keySet().iterator().next()); assertSame(ex.getCause(), ex.getFailedMessages().values().iterator().next()); } }
@Test public void failedMailServerClose() { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost(""); sender.setUsername("username"); sender.setPassword("password"); SimpleMailMessage simpleMessage1 = new SimpleMailMessage(); try { sender.send(simpleMessage1); fail("Should have thrown MailSendException"); } catch (MailSendException ex) { // expected ex.printStackTrace(); assertTrue(ex.getFailedMessages() != null); assertEquals(0, ex.getFailedMessages().size()); } }
@Test public void failedMimeMessage() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); sender.setPassword("password"); MimeMessage mimeMessage1 = sender.createMimeMessage(); mimeMessage1.setRecipient(Message.RecipientType.TO, new InternetAddress("he@mail.org")); mimeMessage1.setSubject("fail"); MimeMessage mimeMessage2 = sender.createMimeMessage(); mimeMessage2.setRecipient(Message.RecipientType.TO, new InternetAddress("she@mail.org")); try { sender.send(mimeMessage1, mimeMessage2); } catch (MailSendException ex) { ex.printStackTrace(); assertEquals("host", sender.transport.getConnectedHost()); assertEquals("username", sender.transport.getConnectedUsername()); assertEquals("password", sender.transport.getConnectedPassword()); assertTrue(sender.transport.isCloseCalled()); assertEquals(1, sender.transport.getSentMessages().size()); assertEquals(mimeMessage2, sender.transport.getSentMessage(0)); assertEquals(1, ex.getFailedMessages().size()); assertEquals(mimeMessage1, ex.getFailedMessages().keySet().iterator().next()); Object subEx = ex.getFailedMessages().values().iterator().next(); assertTrue(subEx instanceof MessagingException); assertEquals("failed", ((MessagingException) subEx).getMessage()); } }
@Test public void failedSimpleMessage() throws MessagingException { MockJavaMailSender sender = new MockJavaMailSender(); sender.setHost("host"); sender.setUsername("username"); sender.setPassword("password"); SimpleMailMessage simpleMessage1 = new SimpleMailMessage(); simpleMessage1.setTo("he@mail.org"); simpleMessage1.setSubject("fail"); SimpleMailMessage simpleMessage2 = new SimpleMailMessage(); simpleMessage2.setTo("she@mail.org"); try { sender.send(simpleMessage1, simpleMessage2); } catch (MailSendException ex) { ex.printStackTrace(); assertEquals("host", sender.transport.getConnectedHost()); assertEquals("username", sender.transport.getConnectedUsername()); assertEquals("password", sender.transport.getConnectedPassword()); assertTrue(sender.transport.isCloseCalled()); assertEquals(1, sender.transport.getSentMessages().size()); assertEquals(new InternetAddress("she@mail.org"), sender.transport.getSentMessage(0).getAllRecipients()[0]); assertEquals(1, ex.getFailedMessages().size()); assertEquals(simpleMessage1, ex.getFailedMessages().keySet().iterator().next()); Object subEx = ex.getFailedMessages().values().iterator().next(); assertTrue(subEx instanceof MessagingException); assertEquals("failed", ((MessagingException) subEx).getMessage()); } }
/** * @param items the items to send * @see ItemWriter#write(List) */ @Override public void write(List<? extends SimpleMailMessage> items) throws MailException { try { mailSender.send(items.toArray(new SimpleMailMessage[items.size()])); } catch (MailSendException e) { Map<Object, Exception> failedMessages = e.getFailedMessages(); for (Entry<Object, Exception> entry : failedMessages.entrySet()) { mailErrorHandler.handle((SimpleMailMessage) entry.getKey(), entry.getValue()); } } }
/** * @param items the items to send * @see ItemWriter#write(List) */ @Override public void write(List<? extends MimeMessage> items) throws MailException { try { mailSender.send(items.toArray(new MimeMessage[items.size()])); } catch (MailSendException e) { Map<Object, Exception> failedMessages = e.getFailedMessages(); for (Entry<Object, Exception> entry : failedMessages.entrySet()) { mailErrorHandler.handle(new MimeMailMessage((MimeMessage)entry.getKey()), entry.getValue()); } } }