Spring Quartz结合Spring mail定期发送邮件

文件配置例如以下:

<?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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-3.0.xsd" >
    <bean
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:mail.properties" />
	</bean>
   <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
   		<property name="host" >
   			<value>${host}</value>
   		</property>
   		<property name="username" >
   			<value>${username}</value>
   		</property>
   		<property name="password" >
   			<value>${password}</value>
   		</property>
   		   <property name="javaMailProperties"> 
   		   		<props>
   		   			<prop key="mail.smtp.auth">true</prop>
   		   			<prop key="mail.smtp.timeout">25000</prop>
   		   		</props>
   		   </property> 
   </bean>
    <import resource="spring-quartz2.xml"/>
    <context:component-scan base-package="com.study"/>
</beans>


 

spring-quartz2.xml

<?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:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/task 
    http://www.springframework.org/schema/task/spring-task-3.0.xsd  " >
    <task:annotation-driven/>  
</beans>
	


 

package com.study;

import java.io.File;

import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ServletContextAware;
@Component
public class QuartzJob{
	@Autowired
	private JavaMailSender jms;
	private SimpleMailMessage smm;
	private MimeMessage mailMsg;
	
	public QuartzJob() throws ServletException{
		//initSimpleMailMSG();
		//initHTMLMailMSG();
		initHTMLWithAttachMailMsg();
		System.out.println("Quartzjob创建成功");
	}
	@Scheduled(cron = "0/1 * *  * * ? ")
	public void run(){
		System.out.println("Quartz运行的任务调度发送邮件");
		try {
			//jms.send(smm);
			jms.send(mailMsg);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void initSimpleMailMSG(){//发送简单邮件
		smm = new SimpleMailMessage();
		smm.setTo("253503125@qq.com");
		smm.setFrom("hbzhongqian@163.com");
		smm.setSubject("測试邮件");
		smm.setText("springMail的简单測试发送邮件");
	}
	private void initHTMLMailMSG(){//发送HTML格式的邮件
		 JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();  
		 mailMsg = senderImpl.createMimeMessage();
		 try {
			 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg,true,"utf-8");
			 messageHelper.setTo("253503125@qq.com");//接受者
			 messageHelper.setFrom("hbzhongqian@163.com");//发送者  
			 messageHelper.setSubject("測试邮件");//主题  
			 //邮件内容,注意加參数true,表示启用html格式  
			 messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1><font color='red'>BaBY</font></body></html>",true);
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	private void initHTMLWithAttachMailMsg(){//发送带附件的邮件
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 
	    mailMsg = senderImpl.createMimeMessage();
		 try {
			 MimeMessageHelper messageHelper = new MimeMessageHelper(mailMsg,true,"utf-8");  
			 messageHelper.setTo("253503125@qq.com");//接受者
			 messageHelper.setFrom("hbzhongqian@163.com");//发送者
			 messageHelper.setSubject("測试邮件");//主题
			 messageHelper.setText("<html><head></head><body><h1>hello!!chao.wang</h1></body></html>",true);
			 //附件内容  
			 messageHelper.addInline("a", new File("E:/xiezi.png"));
			// messageHelper.addInline("b", new File("E:/logo.png"));
			 // 这里的方法调用和插入图片是不同的,使用MimeUtility.encodeWord()来解决附件名称的中文问题
			// messageHelper.addAttachment(MimeUtility.encodeWord(file.getName()), file);   
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}


 

邮件发送带附件存在问题。

 

 

 

posted @ 2014-06-09 20:31  blfshiye  阅读(205)  评论(0编辑  收藏  举报