Class MimeMessageItemWriter

java.lang.Object
org.springframework.batch.item.mail.javamail.MimeMessageItemWriter
All Implemented Interfaces:
ItemWriter<jakarta.mail.internet.MimeMessage>

public class MimeMessageItemWriter extends Object implements ItemWriter<jakarta.mail.internet.MimeMessage>

A simple ItemWriter that can send mail messages. If it fails there is no guarantee about which of the messages were sent, but the ones that failed can be picked up in the error handler. Because the mail protocol is not transactional, failures should be dealt with here if possible rather than allowing them to be rethrown (which is the default).

Delegates the actual sending of messages to a JavaMailSender, using the batch method JavaMailSender.send(MimeMessage[]), which normally uses a single server connection for the whole batch (depending on the implementation). The efficiency of for large volumes of messages (repeated calls to the item writer) might be improved by the use of a special JavaMailSender that caches connections to the server in between calls.

This writer is stateless, therefore it is thread-safe and automatically restartable.

Since:
2.1
Author:
Dave Syer, Mahmoud Ben Hassine
  • Constructor Details

    • MimeMessageItemWriter

      public MimeMessageItemWriter()
  • Method Details

    • setJavaMailSender

      public void setJavaMailSender(org.springframework.mail.javamail.JavaMailSender mailSender)
      A JavaMailSender to be used to send messages in write(Chunk).
      Parameters:
      mailSender - service for doing the work of sending a MIME message
    • setMailErrorHandler

      public void setMailErrorHandler(MailErrorHandler mailErrorHandler)
      The handler for failed messages. Defaults to a DefaultMailErrorHandler.
      Parameters:
      mailErrorHandler - the mail error handler to set
    • afterPropertiesSet

      public void afterPropertiesSet() throws IllegalStateException
      Check mandatory properties (mailSender).
      Throws:
      IllegalStateException - if the mandatory properties are not set
      See Also:
      • InitializingBean.afterPropertiesSet()
    • write

      public void write(Chunk<? extends jakarta.mail.internet.MimeMessage> chunk) throws org.springframework.mail.MailException
      Description copied from interface: ItemWriter
      Process the supplied data element. Will not be called with any null items in normal operation.
      Specified by:
      write in interface ItemWriter<jakarta.mail.internet.MimeMessage>
      Parameters:
      chunk - the chunk of items to send
      Throws:
      org.springframework.mail.MailException
      See Also: