public class

JavaMailSenderImpl

extends Object
implements JavaMailSender
java.lang.Object
   ↳ org.springframework.mail.javamail.JavaMailSenderImpl

Class Overview

Production implementation of the JavaMailSender interface, supporting both JavaMail MimeMessage MimeMessages and Spring SimpleMailMessages. Can also be used as a plain MailSender implementation.

Allows for defining all settings locally as bean properties. Alternatively, a pre-configured JavaMail javax.mail.Session can be specified, possibly pulled from an application server's JNDI environment.

Non-default properties in this object will always override the settings in the JavaMail Session. Note that if overriding all values locally, there is no added value in setting a pre-configured Session.

Summary

Constants
int DEFAULT_PORT The default port: -1
String DEFAULT_PROTOCOL The default protocol: 'smtp'
Public Constructors
JavaMailSenderImpl()
Create a new instance of the JavaMailSenderImpl class.
Public Methods
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.
MimeMessage createMimeMessage()
This implementation creates a SmartMimeMessage, holding the specified default encoding and default FileTypeMap.
String getDefaultEncoding()
Return the default encoding for MimeMessage MimeMessages, or null if none.
FileTypeMap getDefaultFileTypeMap()
Return the default Java Activation FileTypeMap for MimeMessage MimeMessages, or null if none.
String getHost()
Return the mail server host.
Properties getJavaMailProperties()
Allow Map access to the JavaMail properties of this sender, with the option to add or override specific entries.
String getPassword()
Return the password for the account at the mail host.
int getPort()
Return the mail server port.
String getProtocol()
Return the mail protocol.
synchronized Session getSession()
Return the JavaMail Session, lazily initializing it if hasn't been specified explicitly.
String getUsername()
Return the username for the account at the mail host.
void send(MimeMessage mimeMessage)
Send the given JavaMail MIME message.
void send(SimpleMailMessage[] simpleMessages)
Send the given array of simple mail messages in batch.
void send(SimpleMailMessage simpleMessage)
Send the given simple mail message.
void send(MimeMessage[] mimeMessages)
Send the given array of JavaMail MIME messages in batch.
void setDefaultEncoding(String defaultEncoding)
Set the default encoding to use for MimeMessage MimeMessages created by this instance.
void setDefaultFileTypeMap(FileTypeMap defaultFileTypeMap)
Set the default Java Activation FileTypeMap to use for MimeMessage MimeMessages created by this instance.
void setHost(String host)
Set the mail server host, typically an SMTP host.
void setJavaMailProperties(Properties javaMailProperties)
Set JavaMail properties for the Session.
void setPassword(String password)
Set the password for the account at the mail host, if any.
void setPort(int port)
Set the mail server port.
void setProtocol(String protocol)
Set the mail protocol.
synchronized void setSession(Session session)
Set the JavaMail Session, possibly pulled from JNDI.
void setUsername(String username)
Set the username for the account at the mail host, if any.
Protected Methods
void doSend(MimeMessage[] mimeMessages, Object[] originalMessages)
Actually send the given array of MimeMessages via JavaMail.
Transport getTransport(Session session)
Obtain a Transport object from the given JavaMail Session, using the configured protocol.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.mail.MailSender
From interface org.springframework.mail.javamail.JavaMailSender

Constants

public static final int DEFAULT_PORT

The default port: -1

Constant Value: -1 (0xffffffff)

public static final String DEFAULT_PROTOCOL

The default protocol: 'smtp'

Constant Value: "smtp"

Public Constructors

public JavaMailSenderImpl ()

Create a new instance of the JavaMailSenderImpl class.

Initializes the "defaultFileTypeMap" property with a default ConfigurableMimeFileTypeMap.

Public Methods

public 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
MailException

public MimeMessage createMimeMessage ()

This implementation creates a SmartMimeMessage, holding the specified default encoding and default FileTypeMap. This special defaults-carrying message will be autodetected by MimeMessageHelper, which will use the carried encoding and FileTypeMap unless explicitly overridden.

Returns
  • the new MimeMessage instance

public String getDefaultEncoding ()

Return the default encoding for MimeMessage MimeMessages, or null if none.

public FileTypeMap getDefaultFileTypeMap ()

Return the default Java Activation FileTypeMap for MimeMessage MimeMessages, or null if none.

public String getHost ()

Return the mail server host.

public Properties getJavaMailProperties ()

Allow Map access to the JavaMail properties of this sender, with the option to add or override specific entries.

Useful for specifying entries directly, for example via "javaMailProperties[mail.smtp.auth]".

public String getPassword ()

Return the password for the account at the mail host.

public int getPort ()

Return the mail server port.

public String getProtocol ()

Return the mail protocol.

public synchronized Session getSession ()

Return the JavaMail Session, lazily initializing it if hasn't been specified explicitly.

public String getUsername ()

Return the username for the account at the mail host.

public 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
MailException

public void send (SimpleMailMessage[] simpleMessages)

Send the given array of simple mail messages in batch.

Parameters
simpleMessages the messages to send
Throws
MailException

public void send (SimpleMailMessage simpleMessage)

Send the given simple mail message.

Parameters
simpleMessage the message to send
Throws
MailException

public 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
MailException

public void setDefaultEncoding (String defaultEncoding)

Set the default encoding to use for MimeMessage MimeMessages created by this instance.

Such an encoding will be auto-detected by MimeMessageHelper.

public void setDefaultFileTypeMap (FileTypeMap defaultFileTypeMap)

Set the default Java Activation FileTypeMap to use for MimeMessage MimeMessages created by this instance.

A FileTypeMap specified here will be autodetected by MimeMessageHelper, avoiding the need to specify the FileTypeMap for each MimeMessageHelper instance.

For example, you can specify a custom instance of Spring's ConfigurableMimeFileTypeMap here. If not explicitly specified, a default ConfigurableMimeFileTypeMap will be used, containing an extended set of MIME type mappings (as defined by the mime.types file contained in the Spring jar).

public void setHost (String host)

Set the mail server host, typically an SMTP host.

Default is the default host of the underlying JavaMail Session.

public void setJavaMailProperties (Properties javaMailProperties)

Set JavaMail properties for the Session.

A new Session will be created with those properties. Use either this method or setSession(Session), but not both.

Non-default properties in this instance will override given JavaMail properties.

public void setPassword (String password)

Set the password for the account at the mail host, if any.

Note that the underlying JavaMail Session has to be configured with the property "mail.smtp.auth" set to true, else the specified password will not be sent to the mail server by the JavaMail runtime. If you are not explicitly passing in a Session to use, simply specify this setting via setJavaMailProperties(Properties).

public void setPort (int port)

Set the mail server port.

Default is DEFAULT_PORT, letting JavaMail use the default SMTP port (25).

public void setProtocol (String protocol)

Set the mail protocol. Default is "smtp".

public synchronized void setSession (Session session)

Set the JavaMail Session, possibly pulled from JNDI.

Default is a new Session without defaults, that is completely configured via this instance's properties.

If using a pre-configured Session, non-default properties in this instance will override the settings in the Session.

public void setUsername (String username)

Set the username for the account at the mail host, if any.

Note that the underlying JavaMail Session has to be configured with the property "mail.smtp.auth" set to true, else the specified username will not be sent to the mail server by the JavaMail runtime. If you are not explicitly passing in a Session to use, simply specify this setting via setJavaMailProperties(Properties).

Protected Methods

protected void doSend (MimeMessage[] mimeMessages, Object[] originalMessages)

Actually send the given array of MimeMessages via JavaMail.

Parameters
mimeMessages MimeMessage objects to send
originalMessages corresponding original message objects that the MimeMessages have been created from (with same array length and indices as the "mimeMessages" array), if any
Throws
MailAuthenticationException in case of authentication failure
MailSendException in case of failure when sending a message
MailException

protected Transport getTransport (Session session)

Obtain a Transport object from the given JavaMail Session, using the configured protocol.

Can be overridden in subclasses, e.g. to return a mock Transport object.

Throws
NoSuchProviderException
See Also