主要把老大的一点拆出来,以后随时使用,学习老大的:
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() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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() {
@Override
public 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" />
@Component
public 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(","), "你好", "现在在干嘛?"));
}