线程池发送邮件的公共类实现

来源:互联网 发布:vb.net 调用水晶报表 编辑:程序博客网 时间:2024/05/17 16:03

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;@Servicepublic class MailAuthBiz implements IMailAuthBiz  {@Resourceprivate MailAuth mailAuth;@Resourceprivate 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 --------------------------------------------------- *************************************************** */@Overridepublic 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 blocke.printStackTrace();}}/** * <pre> * ********************************************* * Copyright sf-express. * All rights reserved. * Description: TODO(这里用一句话描述这个类的作用) * HISTORY: * ********************************************* *  VersionDateAuthor   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.代码就可以直接调用接口了。

 



 

0 0
原创粉丝点击