使用quartz和JavaMail发送定时邮件

quartz定时调度和JavaMail自带的发邮件  就可以定时发送邮件了

1)首先导入quartz和JavaMail所需的jar包 (因为我使用的时maven 所以直接在porm文件中添加就可以了)

                <!--引入Quartz的依赖 -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.3</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>2.2.3</version>
		</dependency>
		<!-- 引入javaMail依赖 -->
		<dependency>
			<groupId>javax.mail</groupId>
			<artifactId>mail</artifactId>
			<version>1.4</version>
		</dependency>

2)编写一个需要定时操作的类(发邮件的类)

package com.jack_Gao.mail;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
 * 发送邮件的作业
 */
public class MailJob {

        //spring属性注入
	private String username;
	private String password;
	private String smtpServer;

	public void execute() {
		System.out.println("要发邮件了。。。");
		try {
			if(true){
				final Properties mailProps = new Properties();
				mailProps.put("mail.smtp.host", this.getSmtpServer());
				mailProps.put("mail.smtp.auth", "true");
				mailProps.put("mail.username", this.getUsername());
				mailProps.put("mail.password", this.getPassword());

				Authenticator authenticator = new Authenticator() {
					protected PasswordAuthentication getPasswordAuthentication() {
						// 用户名、密码
						String userName = mailProps.getProperty("mail.username");
						String password = mailProps.getProperty("mail.password");
						return new PasswordAuthentication(userName, password);
					}
				};
				// 使用环境属性和授权信息,创建邮件会话
				Session mailSession = Session.getInstance(mailProps, authenticator);
				for(int i=0;i<100;i++){
					// 创建邮件消息
					MimeMessage message = new MimeMessage(mailSession);
					// 设置发件人
					InternetAddress from = new InternetAddress(mailProps.getProperty("mail.username"));
					message.setFrom(from);
					// 设置收件人
					InternetAddress to = new InternetAddress("xxxxx@163.com");
					message.setRecipient(RecipientType.TO, to);
					// 设置邮件标题
					message.setSubject("我就是来测试一下邮件啊!!");
					// 设置邮件的内容体
					message.setContent("我又要发邮件给你了 哈哈!!! 骚扰骚扰", "text/html;charset=UTF-8");
					// 发送邮件
					Transport.send(message);
				}   
			}                      
		} catch (Exception ex) {   
			ex.printStackTrace();  
		}                          
	}

//------------------------------属性注入所需要的get/set方法----------------------------------------

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSmtpServer() {
		return smtpServer;
	}
	public void setSmtpServer(String smtpServer) {
		this.smtpServer = smtpServer;
	}
	
}

3)在spring中配置quartz(基本上都是固定写法 不需要记住 直接会用就好) 需要更改就是需要定时操作的类的位置和cronExpression(定时时间的设置) 了解该表达式的语法 然后直接在线生成就好 =>在线Cron生成器

发送邮件的MailJob类的一些属性  (把要发件人的账号密码注入进来)  也可以直接在类中设置

<!-- 配置MyJob-->
	<bean id="myJob" class="com.jack_Gao.javaMail.MailJob">
		<property name="username" value="xxxxx@163.com" />
		<property name="password" value="xxxxx" />    <!--切记不是账号密码 是授权密码-->
		<property name="smtpServer" value="smtp.163.com" />
	</bean>
			
			<!-- 配置jobDetail -->
			<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
				<!--配置用到的Job实例 -->
				<property name="targetObject">
					<ref bean="myJob"/>
				</property>
				<!-- 配置实例中的方法 -->
				<property name="targetMethod">
					<value>execute</value>
				</property>
			</bean>
			
			
			<!-- 配置触发器 -->
			<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
				<property name="jobDetail">
					<ref bean="myJobDetail"/>
				</property>
				<!-- 设置出触发时间 -->
				<property name="cronExpression">
					<!-- 每5秒触发一次 -->
					<value>0/5 * * * * ?</value>
				</property>
			</bean>
			
			<!-- 配置scheduler工厂 -->
			<bean id="" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
				<!-- 把触发器注入 可能有多个触发器 -->
				<property name="triggers">
					<list>
						<ref bean="myTrigger"/>
					</list>
				</property>
			</bean>
4)然后一个简单的定时发邮件的项目就做好了    就可以尽情的骚扰别人拉 (可爱脸.jpg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值