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

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

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(","), "你好", "现在在干嘛?"));
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值