您的位置:首页 > 编程语言 > Java开发

利用spring定时器发送定时邮件

2015-10-16 16:56 701 查看
spring


的org.springframework.mail包提供的对邮件的支持。

1.封装一个方法用于发送邮件的方法:

package com.ql.v2.utils;

import java.util.Properties;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
/**
 isValate:是否校验(或者授权):true
 to:邮件接收者地址数组。:{"***@qq.com","***@qq.com"},因为是数组所以支持群发。
 subject:邮件主题
 context:邮件内容
 */
     public static void sendEmails( String isValate, String[] to, String subject, String context) throws Exception {
        //邮件服务器的配置信息
        JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
        senderImpl.setHost("smtp.exmail.qq.com");//发件服务器HOST
        // 根据自己的情况,设置username
        senderImpl.setUsername("***");//发件人名称
        // 根据自己的情况, 设置password
        senderImpl.setPassword("***");//发件邮箱密码
        
        Properties pp = new Properties();
        pp.put("mail.smtp.auth", isValate);//是否校验(或者授权):true
        senderImpl.setJavaMailProperties(pp);
        
        // 获取邮件的样板
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom("123123123@qq.com");// 发邮件邮箱
        msg.setTo(to);
        msg.setSubject(subject);// 邮件主题
        msg.setText(context);
        
        MimeMessage mimeMsg = senderImpl.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true, "UTF-8");
        helper.setTo(msg.getTo());//邮件接收地址
        helper.setSubject(msg.getSubject());//邮件主题
        helper.setFrom(msg.getFrom(), "别名");//邮件发送人-别名
        helper.setText(msg.getText(), true);//邮件内容
        senderImpl.send(mimeMsg);//发送邮件
    }


2.定义一个发送邮件的定时类

package com.ql.v2.controller.tasks;

import java.io.File;
import org.apache.commons.io.FileUtils;
import org.springframework.core.io.ClassPathResource;
import com.ql.v2.utils.SendEmailUtil;

/**
 * 自动统计类
 * @author huayafei
 *
 */
public class AutoStatisticsTask {	
	/**
	 * 自动统计微信端定存宝、活期宝的投资金额与人数信息。
	 */
	public void autoStatisticWxInfo(){
		try {
			//读取文件,然后发送邮件。
			ClassPathResource resource=new ClassPathResource("/");
			String filepath=resource.getFile().getParent()+"/other_pages/statistic.html";
			//利用oapche提供的方法把一个文件读取成字符串
			String html=FileUtils.readFileToString(new File(filepath),"UTF-8");
			/*
			 * 群发邮件
			 */
			String isValate = "true";//邮件授权
			String[] to = {"***@qinlian.me","***@qq.com"};//收件人
			String subject = "微信端投资统计记录";//邮件主题
			//调用发送邮件的方法
			SendEmailUtil.sendEmails(isValate, to, subject, html);
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage(),e);
		}
	}
}


3.设置spring配置文件定时调用发送邮件的方法。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> 	
	<!-- 总调度,用于启动定时器 -->
	<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="autoStatistics_time" />
			</list>
		</property>
	</bean>
	
	<!-- 注入调度的object -->
	<bean id="autoStatisticsTask" class="com.ql.v2.controller.tasks.AutoStatisticsTask"/>
	
	<!--自动发送统计数据-->
	<bean id="autoStatisticsTaskProperties" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="autoStatisticsTask"></property><!-- 定时器类 -->
		<property name="targetMethod" value="autoStatisticWxInfo"></property><!-- 定时器类的具体处理方法 -->
		<property name="concurrent" value="false"></property> <!-- 定时器是否支持并发 -->
	</bean>
	
	<!-- 自动发送统计数据 -->
	<bean id="autoStatistics_time" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="autoStatisticsTaskProperties"></property>
		<property name="cronExpression" value="0 0/1 * * * ?"></property> <!--每1分钟执行一次 -->
	</bean>
</beans>


sping配置文件关联图解:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: