interface for JavaMail,
supporting MIME messages both as direct arguments and through preparation
callbacks. Typically used in conjunction with the
class for convenient creation of JavaMail
including attachments etc.
Clients should talk to the mail sender through this interface if they need
mail functionality beyond
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
mechanism, possibly using a
MimeMessageHelper for populating the message.
MimeMessageHelper's javadoc for an example.
The entire JavaMail
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
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