使用Spring提供的MailSender异步发送文本邮件

在工程中经常有发送邮件的任务,如果使用JavaMail来发送邮件,用到的代码较多,过程和细节也相对复杂,而使用Spring的MailSender能相对简单方便些,这样使程序员能更快捷的完成邮件发送任务。下面请看示例代码:

注意在执行代码前,请确认已经将activation.jar,commons-logging-1.0.4.jar,mail.jar和spring.jar载入工程。

1.抽象邮件发送类BaseMailSender代码;

package com.heyang.tool.mailsender;import org.springframework.mail.MailSender;import org.springframework.mail.SimpleMailMessage;/** *//*** 抽象父类,定义了发送邮件的函数,取得getMailSender函数留待子类实现* @author: 何杨(heyang78@gmail.com)* @date: 2008-8-6-下午03:11:38*/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(String to,String subject,String concept){     SimpleMailMessage msg=new SimpleMailMessage();     msg.setFrom(senderEmailAddr);     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;   }}

二.实现类MailSenderImpl代码。

package com.heyang.tool.mailsender;import java.util.Properties;import org.springframework.mail.MailSender;import org.springframework.mail.javamail.JavaMailSenderImpl;/** *//*** 邮件发送者实现类* @author: 何杨(heyang78@gmail.com)* @date: 2008-8-6-下午03:14:49*/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;   }}

三.bean.xml

                         

四.使用示例

package com.heyang.util;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.heyang.tool.mailsender.BaseMailSender;import com.heyang.tool.mailsender.MailSenderImpl;/** *//*** 异步邮件发送实用类(使用Spring的邮件发送形式)* @author: 何杨(heyang78@gmail.com)* @date: 2008-8-6-下午02:43:22*/public final class MailUtil {   /** *//**   * 发送邮件   * @param emailAddr:收信人邮件地址   * @param mailTitle:邮件标题   * @param mailConcept:邮件内容   */   public static void sendmail(final String emailAddr, final String mailTitle,       final String mailConcept) {     Runnable thread=new Runnable(){       public void run(){         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");         BaseMailSender sender=(MailSenderImpl)context.getBean("mailSender");         sender.sendmail(emailAddr, mailTitle, mailConcept);       }     };     new Thread(thread).start();   }   /** *//**   * 向系统维护者发送邮件   * @param mailTitle   * @param mailConcept   */   public static void sendmailToSupporters(final String mailTitle,       final String mailConcept){     Runnable thread=new Runnable(){       public void run(){         ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");         SupportTeam supportTeam=(SupportTeam)context.getBean("supportTeam");         BaseMailSender sender=(MailSenderImpl)context.getBean("mailSender");         List mails=supportTeam.getSupporterEmails();         for(String mailAddr:mails){           sender.sendmail(mailAddr, mailTitle, mailConcept);         }       }     };     new Thread(thread).start();   }   /** *//**   * 测试邮件发送   * @param args   */   public static void main(String[] args){     MailUtil.sendmailToSupporters("title_spring", "concept_spring");   }}

一张单程车票,一颗潇洒的心。

使用Spring提供的MailSender异步发送文本邮件

相关文章:

你感兴趣的文章:

标签云: