1、抽象父类,定义了发送邮件的函数,取得getMailSender函数留待子类实现
package com.iss.itreasury.test.mailtest;
import java.util.Map;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
/**
* 抽象父类,定义了发送邮件的函数,取得getMailSender函数留待子类实现
* @Description: TODO
* @author longjun
* @date 2016-5-13 上午10:40:15
*/
public abstract class BaseMailSender{
protected String userName;
protected String password;
protected String stmpServer;
protected String senderEmailAddr;
/**
* 取得邮件发送者,留待子类实现
* @return
*/
protected abstract MailSender getMailSender();
/**
* 发送邮件
* @param from :寄信人邮件地址
* @param to :收信人邮件地址
* @param subject :邮件标题
* @param concept :邮件内容
*/
public final void sendMail(Map<String, Object> messageMap){
SimpleMailMessage msg=new SimpleMailMessage();
msg.setFrom(senderEmailAddr);
String to = messageMap.get("email").toString();
String subject = messageMap.get("subject").toString();
String concept = messageMap.get("content").toString();
msg.setTo(to);
msg.setSubject(subject);
msg.setText(concept);
MailSender sender=getMailSender();
sender.send(msg);
}
public void setPassword(String password) {
this.password = password;
}
public void setSenderEmailAddr(String senderEmailAddr) {
this.senderEmailAddr = senderEmailAddr;
}
public void setStmpServer(String stmpServer) {
this.stmpServer = stmpServer;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
2、邮件发送者实现类
package com.iss.itreasury.test.mailtest;
import java.util.Properties;
import org.springframework.mail.MailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
/**
* 邮件发送者实现类
* @Description: TODO
* @author longjun
* @date 2016-5-13 上午10:43:10
*/
public class MailSenderImpl extends BaseMailSender{
/**
* 取得邮件发送者
* @return
*/
protected MailSender getMailSender(){
JavaMailSenderImpl sender=new JavaMailSenderImpl();
// 邮件发送者邮箱SMTP服务器
sender.setHost(stmpServer);
// 邮件发送者邮箱用户
sender.setUsername(userName);
// 邮件发送者邮箱密码
sender.setPassword(password);
// 客户端认证设置
Properties props = new Properties();
// 同时通过验证
props.put("mail.smtp.auth", "true");
// 存储发送邮件服务器的信息
props.put("mail.smtp.host", stmpServer);
// 服务器端认证设置
sender.setJavaMailProperties(props);
return sender;
}
}
3、发送邮件的线程类
package com.iss.itreasury.test.mailtest;
import java.util.HashMap;
import java.util.Map;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 发送邮件的线程类
* @Description: TODO
* @author longjun
* @date 2016-5-13 下午2:26:47
*/
public class MailUtil {
public static void sendMail(final Map<String, Object> messageMap){
Runnable thread=new Runnable(){
@Override
public void run() {
ApplicationContext context = new ClassPathXmlApplicationContext("MailConfiguration.xml");
BaseMailSender sender=(MailSenderImpl)context.getBean("mailSender");
sender.sendMail(messageMap);
}
};
new Thread(thread).start();
}
public static void main(String[] args) {
Map<String, Object> messageMap = new HashMap<String, Object>();
messageMap.put("subject", "主题");
messageMap.put("content", "内容");
messageMap.put("email", "263996530@qq.com");
sendMail(messageMap);
}
}
4、邮件xml配置文件(MailConfiguration.xml放在src目录下)
<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="mailSender" class="com.iss.itreasury.test.mailtest.MailSenderImpl" scope="prototype">
<property name="userName" value="junlonga"/>
<property name="password" value="******"/>
<property name="stmpServer" value="*****"/>
<property name="senderEmailAddr" value="******"/>
</bean>
</beans>