邮件推送实例,使用spring的注解方式

来源:互联网 发布:淘宝拍照摄影棚制作 编辑:程序博客网 时间:2024/05/21 15:49

主要把老大的一点拆出来,以后随时使用,学习老大的:

package org.tools.mail;import java.io.File;import java.util.Date;import java.util.Set;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.mail.javamail.MimeMessageHelper;import org.tools.spring.SpringContextUtil;/** * @ClassName PushMail * @date 2016年11月6日 * @version 1.0 * @description 邮件推送工具类 多线程执行不关心结果 */public class PushMail {private static JavaMailSenderImpl mailSender;static ExecutorService pool = Executors.newCachedThreadPool();static {mailSender = SpringContextUtil.getBean("mailSender", JavaMailSenderImpl.class);}/** * @param mail * @date 2016年11月6日 * @version 1.0 * @description 推送文本格式邮件 */public static void pushText(final TextMail mail) {pool.execute(new Runnable() {@Overridepublic void run() {SimpleMailMessage message = new SimpleMailMessage();message.setTo(mail.getTo());message.setFrom(mailSender.getUsername());message.setSubject(mail.getSubject());message.setText(mail.getText());message.setSentDate(new Date());mailSender.send(message);}});}/** * @param mail * @date 2016年11月6日 * @version 1.0 * @description 推送富文本格式邮件包括附件 */public static void pushHtml(final HtmlMail mail) {pool.execute(new Runnable() {@Overridepublic void run() {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setTo(mail.getTo());helper.setFrom(mailSender.getUsername());helper.setSubject(mail.getSubject());helper.setText(mail.getText(), true);helper.setSentDate(new Date());Set<File> files = mail.getFiles();if (files != null) {for (File file : files) {helper.addAttachment(file.getName(), file);}}mailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}});}}
package org.tools.mail;/** * @ClassName TextMail  * @date 2016年11月6日 * @version 1.0 * @description 文本格式邮件 */public class TextMail {/** * @Fields <font color="blue">to</font> * @description 发送对象 多个以数组形势 */private String[] to;/** * @Fields <font color="blue">subject</font> * @description 邮件主题 */private String subject;/** * @Fields <font color="blue">text</font> * @description 文本内容 */private String text;public TextMail() {}public TextMail(String[] to, String subject, String text) {this.to = to;this.subject = subject;this.text = text;}public TextMail(String to, String subject, String text) {this.to = new String[] { to };this.subject = subject;this.text = text;}public String[] getTo() {return to;}public void setTo(String[] to) {this.to = to;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getText() {return text;}public void setText(String text) {this.text = text;}}
package org.tools.mail;import java.io.File;import java.util.Date;import java.util.Set;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSenderImpl;import org.springframework.mail.javamail.MimeMessageHelper;import org.tools.spring.SpringContextUtil;/** * @ClassName PushMail * @date 2016年11月6日 * @version 1.0 * @description 邮件推送工具类 多线程执行不关心结果 */public class PushMail {private static JavaMailSenderImpl mailSender;static ExecutorService pool = Executors.newCachedThreadPool();static {mailSender = SpringContextUtil.getBean("mailSender", JavaMailSenderImpl.class);}/** * @param mail * @date 2016年11月6日 * @version 1.0 * @description 推送文本格式邮件 */public static void pushText(final TextMail mail) {pool.execute(new Runnable() {@Overridepublic void run() {SimpleMailMessage message = new SimpleMailMessage();message.setTo(mail.getTo());message.setFrom(mailSender.getUsername());message.setSubject(mail.getSubject());message.setText(mail.getText());message.setSentDate(new Date());mailSender.send(message);}});}/** * @param mail * @date 2016年11月6日 * @version 1.0 * @description 推送富文本格式邮件包括附件 */public static void pushHtml(final HtmlMail mail) {pool.execute(new Runnable() {@Overridepublic void run() {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setTo(mail.getTo());helper.setFrom(mailSender.getUsername());helper.setSubject(mail.getSubject());helper.setText(mail.getText(), true);helper.setSentDate(new Date());Set<File> files = mail.getFiles();if (files != null) {for (File file : files) {helper.addAttachment(file.getName(), file);}}mailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}});}}

  <!--开启这个配置,spring才能识别@Scheduled注解 --><task:scheduler id="scheduler" pool-size="10" /><task:executor id="executor" pool-size="5-10" queue-capacity="200" rejection-policy="CALLER_RUNS" /><task:annotation-driven executor="executor" scheduler="scheduler" />


@Componentpublic class MailServiceTask {/** * @date 2017年7月27日 * @version 1.0 * @description 午餐点餐提醒 */@Scheduled(cron = "0 0 11 ? * MON-FRI")public void drinkTask() {PushMail.pushText(new TextMail(Prompt.bundle("system.mail.drink.user.list").split(","), "定时点餐提醒", "同志们你们滴外卖点了么?再不点十二点可能就送不到了哟"));}
@Scheduled(cron = "0 0 9-18/2 ? * MON-FRI")public void lovePushTask() {PushMail.pushText(new TextMail("********@qq.com".split(","), "你好", "现在在干嘛?"));}



原创粉丝点击