Spring邮件抽象层的主要包为org.springframework.mail
。它包括了发送电子邮件的主要接口MailSender
,和值对象SimpleMailMessage
,它封装了简单邮件的属性如from, to,cc, subject,text。
包里还包含一棵以MailException
为根的checked Exception继承树,它们提供了对底层邮件系统异常的高级别抽象。
要获得关于邮件异常层次的更丰富的信息,请参考Javadocs。
为了使用JavaMail中的一些特色, 比如MIME类型的信件, Spring提供了MailSender
的一个子接口,
即org.springframework.mail.javamail.JavaMailSender
。Spring还提供了一个回调接口org.springframework.mail.javamail.MimeMessagePreparator
, 用于准备JavaMail的MIME信件。
public interface MailSender { /** * Send the given simple mail message. * @param simpleMessage message to send * @throws MailException in case of message, authentication, or send errors */ public void send(SimpleMailMessage simpleMessage) throws MailException; /** * Send the given array of simple mail messages in batch. * @param simpleMessages messages to send * @throws MailException in case of message, authentication, or send errors */ public void send(SimpleMailMessage[] simpleMessages) throws MailException; }
public interface JavaMailSender extends MailSender { /** * 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). * @return the new MimeMessage instance * @see #send(MimeMessage) * @see #send(MimeMessage[]) */ public MimeMessage createMimeMessage(); /** * Send the given JavaMail MIME message. * The message needs to have been created with createMimeMessage. * @param mimeMessage message to send * @throws MailException in case of message, authentication, or send errors * @see #createMimeMessage */ public void send(MimeMessage mimeMessage) throws MailException; /** * Send the given array of JavaMail MIME messages in batch. * The messages need to have been created with createMimeMessage. * @param mimeMessages messages to send * @throws MailException in case of message, authentication, or send errors * @see #createMimeMessage */ public void send(MimeMessage[] mimeMessages) throws MailException; /** * Send the JavaMail MIME message prepared by the given MimeMessagePreparator. * Alternative way to prepare MimeMessage instances, instead of createMimeMessage * and send(MimeMessage) calls. Takes care of proper exception conversion. * @param mimeMessagePreparator the preparator to use * @throws MailException in case of message, authentication, or send errors */ public void send(MimeMessagePreparator mimeMessagePreparator) throws MailException; /** * Send the JavaMail MIME messages prepared by the given MimeMessagePreparators. * Alternative way to prepare MimeMessage instances, instead of createMimeMessage * and send(MimeMessage[]) calls. Takes care of proper exception conversion. * @param mimeMessagePreparators the preparator to use * @throws MailException in case of message, authentication, or send errors */ public void send(MimeMessagePreparator[] mimeMessagePreparators) throws MailException; }
public interface MimeMessagePreparator { /** * Prepare the given new MimeMessage instance. * @param mimeMessage the message to prepare * @throws MessagingException passing any exceptions thrown by MimeMessage * methods through for automatic conversion to the MailException hierarchy */ void prepare(MimeMessage mimeMessage) throws MessagingException; }