首页>代码>【demo】自己写的一个 SpringMail 异步发送邮件的demo。 javamail 邮件异步发送>/spring-mail/src/main/java/com/haohui/springmail/MailServiceImpl.java
/* * Copyright 2012-2013 The Haohui Network Corporation */ package com.haohui.springmail; import javax.annotation.Resource; import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.task.TaskExecutor; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.haohui.springmail.MailService; /** * 封装 Spring 集成的邮件发送服务实现类 * * 支持异步发送 利用Spring框架封装的JavaMail现实同步或异步邮件发送 * spring 会负责每次发送后正确关闭 transport * * @project haohui-b2b * @author cevencheng * @create 2012-3-24 上午12:29:07 */ @Service("mailService") public class MailServiceImpl implements MailService { private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class); @Resource JavaMailSender mailSender;// 注入Spring封装的javamail,Spring的xml中已让框架装配 @Resource TaskExecutor taskExecutor;// 注入Spring封装的异步执行器 /* * (non-Javadoc) 发送邮件的具体实现, 目前是异步发送 * * @see * com.haohui.b2b.service.mail.MailService#sendHtmlEmails(java.lang.String, * java.lang.String, java.lang.String) */ public void sendHtmlEmails(String receivers, String subject, String content) { this.sendMailByAsynchronousMode(receivers, subject, content); } /** * 异步发送 * * @see com.zhangjihao.service.MailService#sendMailByAsynchronousMode(com.zhangjihao.bean.Email) */ public void sendMailByAsynchronousMode(final String receivers, final String subject, final String content) { if (logger.isDebugEnabled()) { logger.debug("当前邮件采取异步发送.."); } taskExecutor.execute(new Runnable() { public void run() { try { sendMailBySynchronizationMode(receivers, subject, content); logger.info("邮件发送耗时任务完成"); } catch (Exception e) { logger.error(e.getMessage(), e); } } }); } /** * 同步发送 * * @throws IOException * @see com.zhangjihao.service.MailServiceMode#sendMail(com.zhangjihao.bean.Email) */ public void sendMailBySynchronizationMode(String receivers, String subject, String content) throws Exception { if (receivers == null) { throw new IllegalArgumentException("收件人不能为空"); } // 建立邮件消息,发送简单邮件和html邮件的区别 MimeMessage mailMessage = mailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, "utf-8"); try { receivers = receivers.replaceAll("\\;", ","); // 设置收件人,寄件人 InternetAddress[] toAddress = InternetAddress.parse(receivers); mailMessage.setRecipients(Message.RecipientType.TO, toAddress); // 发送给多个账号 messageHelper.setFrom("inhv@163.com"); // 发件人 messageHelper.setSubject(subject); // 主题 // true 表示启动HTML格式的邮件 messageHelper.setText(content, true); // 邮件内容,注意加参数true,表示启用html格式 // 发送邮件 mailSender.send(mailMessage); } catch (Exception e) { e.printStackTrace(); } } /** * 或者直接使用 spring 3.0 的异步框架 只需使用 @Async 注解即可。 * 需要激活 <!-- 注解异步任务驱动 --> * <task:annotation-driven/> * 详细配置请见: spring-mail.xml */ @Async public void sendAsync() { System.out.println("###### 或者直接采用 spring 3.0 的异步任务注解, 这里的代码直接会用异步线程来运行 #######"); } }
最近下载更多
chenruofei1996 LV1
2020年8月17日
chengxuyuanb LV1
2019年10月16日
ZpongZ LV6
2019年10月6日
dyhqwe LV1
2019年8月1日
chennguo LV6
2019年4月24日
2469684164 LV10
2019年3月16日
zzuLXH LV2
2019年3月12日
tan18871439923 LV14
2018年10月31日
zongheng14 LV2
2018年10月20日
wcy071213 LV27
2018年6月14日