public interface

JavaMailSender

implements MailSender
org.springframework.mail.javamail.JavaMailSender
Known Indirect Subclasses

Class Overview

Extended MailSender interface for JavaMail, supporting MIME messages both as direct arguments and through preparation callbacks. Typically used in conjunction with the MimeMessageHelper class for convenient creation of JavaMail MimeMessage MimeMessages, including attachments etc.

Clients should talk to the mail sender through this interface if they need mail functionality beyond SimpleMailMessage. The production implementation is JavaMailSenderImpl; for testing, mocks can be created based on this interface. Clients will typically receive the JavaMailSender reference through dependency injection.

The recommended way of using this interface is the MimeMessagePreparator mechanism, possibly using a MimeMessageHelper for populating the message. See MimeMessageHelper's javadoc for an example.

The entire JavaMail javax.mail.Session management is abstracted by the JavaMailSender. Client code should not deal with a Session in any way, rather leave the entire JavaMail configuration and resource handling to the JavaMailSender implementation. This also increases testability.

A JavaMailSender client is not as easy to test as a plain MailSender client, but still straightforward compared to traditional JavaMail code: Just let createMimeMessage() return a plain MimeMessage created with a Session.getInstance(new Properties()) call, and check the passed-in messages in your mock implementations of the various send methods.

See Also

Summary

Public Methods
abstract MimeMessage createMimeMessage(InputStream contentStream)
Create a new JavaMail MimeMessage for the underlying JavaMail Session of this sender, using the given input stream as the message source.
abstract MimeMessage createMimeMessage()
Create a new JavaMail MimeMessage for the underlying JavaMail Session of this sender.
abstract void send(MimeMessage[] mimeMessages)
Send the given array of JavaMail MIME messages in batch.
abstract void send(MimeMessage mimeMessage)
Send the given JavaMail MIME message.
[Expand]
Inherited Methods
From interface org.springframework.mail.MailSender

Public Methods

public abstract MimeMessage createMimeMessage (InputStream contentStream)

Create a new JavaMail MimeMessage for the underlying JavaMail Session of this sender, using the given input stream as the message source.

Parameters
contentStream the raw MIME input stream for the message
Returns
  • the new MimeMessage instance
Throws
MailParseException in case of message creation failure
MailException

public abstract MimeMessage createMimeMessage ()

Create a new JavaMail MimeMessage for the underlying JavaMail Session of this sender. Needs to be called to create MimeMessage instances that can be prepared by the client and passed to send(MimeMessage).

Returns
  • the new MimeMessage instance

public abstract void send (MimeMessage[] mimeMessages)

Send the given array of JavaMail MIME messages in batch. The messages need to have been created with createMimeMessage().

Parameters
mimeMessages messages to send
Throws
MailAuthenticationException in case of authentication failure
MailSendException in case of failure when sending a message
MailException

public abstract void send (MimeMessage mimeMessage)

Send the given JavaMail MIME message. The message needs to have been created with createMimeMessage().

Parameters
mimeMessage message to send
Throws
MailAuthenticationException in case of authentication failure
MailSendException in case of failure when sending the message
MailException