Spring Integration provides support for outbound email with the
MailSendingMessageHandler
. It delegates to a configured instance of Spring's
JavaMailSender
:
JavaMailSender mailSender = (JavaMailSender) context.getBean("mailSender"); MailSendingMessageHandler mailSendingHandler = new MailSendingMessageHandler(mailSender);
MailSendingMessageHandler
has various mapping strategies that use Spring's
MailMessage
abstraction. If the received Message's payload is already
a MailMessage instance, it will be sent directly. Therefore, it is generally recommended to precede this
consumer with a Transformer for non-trivial MailMessage construction requirements. However, a few simple
Message mapping strategies are supported out-of-the-box. For example, if the message payload is a byte array,
then that will be mapped to an attachment. For simple text-based emails, you can provide a String-based
Message payload. In that case, a MailMessage will be created with that String as the text content. If you
are working with a Message payload type whose toString() method returns appropriate mail text content, then
consider adding Spring Integration's ObjectToStringTransformer prior to the outbound
Mail adapter (see the example within Section 9.2, “The <transformer> Element” for more detail).
The outbound MailMessage may also be configured with certain values from the
MessageHeaders
. If available, values will be mapped to the outbound mail's
properties, such as the recipients (TO, CC, and BCC), the from/reply-to, and the subject. The header names are
defined by the following constants:
MailHeaders.SUBJECT MailHeaders.TO MailHeaders.CC MailHeaders.BCC MailHeaders.FROM MailHeaders.REPLY_TO