1.在spring的bean.xml文件中配置邮箱的相关信息和线程池的配置。
<!-- 邮件相关配置 邮箱地址 端口好 用户名 密码 发送地址-->
<bean id="mailAuth" class="com.sf.module.commons.domain.MailAuth">
<property name="host" value="xxx" />
<property name="port" value="xxx" />
<property name="username" value="xxx" />
<property name="password" value="xxx" />
<property name="fromuser" value="xxx" />
</bean>
<!-- 邮件线程池配置 -->
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="10" />
<property name="queueCapacity" value="25" />
</bean>
2.添加mailAuth实体类。
</pre><pre class="html" name="code">package com.module.commons.domain;
/**
* <pre>
* *********************************************
* Copyright sf-express.
* All rights reserved.
* Description: TODO(这里用一句话描述这个类的作用)
* HISTORY:
* *********************************************
* Version Date Author Desc
* *********************************************
* </pre>
*/
public class MailAuth {
//邮件服务器地址
private String host;
//邮件服务器端口
private int port;
//用户名
private String username;
//密码
private String password;
//发送人邮件地址
private String fromuser;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFromuser() {
return fromuser;
}
public void setFromuser(String fromuser) {
this.fromuser = fromuser;
}
}
3. 写发送邮件的接口类
public interface IMailAuthBiz {
//发邮件接口
void sendMail(List<String> mailList,String mailTitle,String mailBody);
}
4.写发送邮件的实现类
package com.sf.module.commons.biz;
import java.util.List;
import javax.annotation.Resource;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import com.sf.module.commons.domain.MailAuth;
@Service
public class MailAuthBiz implements IMailAuthBiz {
@Resource
private MailAuth mailAuth;
@Resource
private TaskExecutor taskExecutor; //注入线程池控制类</strong>
public MailAuth getMailAuth() {
return mailAuth;
}
public void setMailAuth(MailAuth mailAuth) {
this.mailAuth = mailAuth;
}
/**
* <p>Description: TODO(这里用一句话描述这个覆盖方法的作用)</p>
* @param mailList 发送人员的地址的集合
* @param mailTitle 邮件标题
* @param mailBody 邮件内容
* @see com.sf.module.commons.biz.IMailAuthBiz#sendMail(java.util.List, java.lang.String, java.lang.String)
***************************************************
Version Date Author Desc
---------------------------------------------------
***************************************************
*/
@Override
public void sendMail(List<String> mailList, String mailTitle,
String mailBody) {
if(null == mailList || mailList.size() == 0){
return ;
}
HtmlEmail email = getHtmlEmail();
try {
for(String mailAdrr : mailList){
if(null == mailAdrr || "".equals(mailAdrr)){
continue;
}
email.addTo(mailAdrr);
}
//显示发送者
email.setFrom(mailAuth.getFromuser());
//标题
email.setSubject(mailTitle);
//邮件内容
email.setHtmlMsg(genMailBody(mailBody));
email.setCharset("UTF-8");
taskExecutor.execute(new MailPool(email));
} catch (EmailException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* <pre>
* *********************************************
* Copyright sf-express.
* All rights reserved.
* Description: TODO(这里用一句话描述这个类的作用)
* HISTORY:
* *********************************************
* Version Date Author Desc
* v2.0 Oct 28, 2014 发邮件线程池
* *********************************************
* </pre>
*/
private class MailPool implements Runnable {
private HtmlEmail email ;
public MailPool(HtmlEmail email1) {
email = email1;
}
public void run() {
try {
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
/**
* @Description: TODO(这里用一句话描述这个方法的作用)
* @return ************************************************** Version
* Date Author Desc
* --------------------------------------------------- v2.0 Sep
* 取得HtmlEmail对象
* **************************************************
*/
private HtmlEmail getHtmlEmail(){
HtmlEmail email = new HtmlEmail();
email.setHostName(mailAuth.getHost());
email.setSmtpPort(mailAuth.getPort());
email.setAuthenticator(new DefaultAuthenticator(mailAuth.getUsername(), mailAuth.getPassword()));
return email;
}
/**
* @Description: TODO(这里用一句话描述这个方法的作用)
* @param bodyContent
* @return
***************************************************
Version Date Author Desc
---------------------------------------------------
***************************************************
*/
private String genMailBody(String bodyContent){
String mailbody = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body>" + bodyContent + "</body></html>";
return mailbody;
}
}
5.代码就可以直接调用接口了。