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信件。
这里简单的介绍了如何使用spring发送各种形式的邮件以及配置。
一,Spring配置发送邮件
1,配置邮件发送信息
#sys.mail.protocol=smtp sys.mail.transport.protocol=smtp sys.mail.host=smtp.exmail.qq.com sys.mail.sysEmailAddress=***@***.com sys.mail.password=*** sys.mail.debug=true sys.mail.smtp.auth=true sys.mail.smtp.timeout=25000 sys.mail.smtp.port=465 sys.mail.smtp.ssl.enable=true sys.mail.toSet=****,***,***
2,spring配置信息
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<!-- 邮件发票配置 -->
<util:properties id="mailProp" location="classpath:config/mail.properties"/>
<bean class="org.springframework.beans.factory.config.PropertiesFactoryBean" id="configProperties">
<property name="locations">
<list>
<value>classpath:config/mail.properties</value>
</list>
</property>
</bean>
<!-- 邮件发送 -->
<bean class="org.springframework.mail.javamail.JavaMailSenderImpl" id="mailSender">
<property name="host" value="#{mailProp['sys.mail.host']}"></property>
<property name="username" value="#{mailProp['sys.mail.sysEmailAddress']}"></property>
<property name="password" value="#{mailProp['sys.mail.password']}"></property>
<property name="protocol" value="#{mailProp['sys.mail.transport.protocol']}"></property>
<property name="defaultEncoding" value="UTF-8"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.debug">#{mailProp['sys.mail.debug']}</prop>
<prop key="mail.smtp.auth">#{mailProp['sys.mail.smtp.auth']}</prop>
<prop key="mail.smtp.timeout">#{mailProp['sys.mail.smtp.timeout']}</prop>
<prop key="mail.smtp.port">#{mailProp['sys.mail.smtp.port']}</prop>
<prop key="mail.smtp.ssl.enable">#{mailProp['sys.mail.smtp.ssl.enable']}</prop>
<prop key="mail.transport.protocol">#{mailProp['sys.mail.transport.protocol']}</prop>
</props>
</property>
</bean>
</beans>
3,注入发送配置信息

4,发送邮件
/**
* 发送邮件
*/
public void sendMail(JavaMailSender mailSender, String from, Set<String> set, String subject, String content, Boolean isHtml, Boolean isAttachment, Map<String, File> attachments) throws Exception {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, isAttachment);
//添加发送者
helper.setFrom(from);
// Set<String> toSet = simpleEmail.getToSet();
//添加接收者
helper.setTo(set.toArray(new String[set.size()]));
//添加主题
helper.setSubject(subject);
//添加正文
helper.setText(content, isHtml);
//添加附件
if (isAttachment && attachments != null) {
for (Map.Entry<String, File> attach : attachments.entrySet()) {
helper.addAttachment(attach.getKey(), attach.getValue());
}
}
JavaMailSenderImpl javaMailSender = (JavaMailSenderImpl) mailSender;
///避开认证问题
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
javaMailSender.getJavaMailProperties().put("mail.smtp.ssl.socketFactory", sf);
javaMailSender.send(message); // 发送
}
二,javaMail发送工具类
package com.ehaoyao.jobcenter.order.utils;
import com.sun.mail.util.MailSSLSocketFactory;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
/**
* com.ehaoyao.utils
* 发送邮件工具类
*
* @author PF
* @create 2017-10-12 17:34
**/
public class EmailUtil {
public static void sendMail(String fromMail, String user, String password, String toMail, String mailTitle, String mailContent) throws Exception {
Properties props = new Properties();
// 开启debug调试
props.setProperty("mail.debug", "true");
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
// 设置邮件服务器主机名
props.setProperty("mail.host", "smtp.qq.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message msg = new MimeMessage(session);
msg.setSubject(mailTitle);
msg.setText(mailContent);
msg.setFrom(new InternetAddress(fromMail));
Transport transport = session.getTransport();
transport.connect("smtp.exmail.qq.com", fromMail, password);
transport.sendMessage(msg, new Address[]{new InternetAddress(toMail)});
transport.close();
}
public static void main(String[] args) throws Exception {
EmailUtil.sendMail("***@***.com","ces","***","***@qq.com","测试","测试");
}
}