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)