1.準(zhǔn)備工作
在qq郵箱,設(shè)置-賬戶中開啟如下圖的服務(wù)
開啟服務(wù)后會收到一個(gè)密碼,在代碼中會有用
2.在POM中添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.配置文件
spring.mail.host=smtp.qq.com
spring.mail.username=2821812493@qq.com
spring.mail.password=cfurxoxjlxfpdcch
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.startls.enable=true
spring.mail.properties.mail.smtp.startls.required=true
那個(gè)password用的是你剛剛開啟服務(wù)時(shí)收到的密碼
4.寫Service接口
public interface MailService {
void sendMail(String to,String subject,String content);
}
- to:你要把郵件發(fā)給誰
- subject:主題
- content:內(nèi)容
5.寫實(shí)現(xiàn)類
@Service("mailService")
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
@Override
public void sendMail(String to, String subject, String content) {
SimpleMailMessage mailMessage=new SimpleMailMessage();
mailMessage.setFrom("********");
mailMessage.setTo(to);
mailMessage.setSubject(subject);
mailMessage.setText(content);
try {
mailSender.send(mailMessage);
System.out.println("發(fā)送簡單郵件");
}catch (Exception e) {
System.out.println("發(fā)送郵件失敗");
}
}
}
setFrom括號內(nèi)填的是你自己的QQ郵箱地址
6.寫定時(shí)郵件
@Service
public class TaskService {
@Autowired
private MailService mailService;
//cron表達(dá)式定時(shí)發(fā)送這個(gè)例子是每天9:59發(fā)送郵件
@Scheduled(cron ="0 59 9 * * ?" )
public void proces(){
mailService.sendMail("*******","王潔磊","9點(diǎn)59分發(fā)送");
}
}
在sendMail內(nèi)分別填上to,subject,content的內(nèi)容
7.運(yùn)行主類(注意一定要加@EnableScheduling注解不然會出錯(cuò))
8.cron表達(dá)式
一個(gè)cron表達(dá)式有至少6個(gè)(也可能7個(gè))有空格分隔的時(shí)間元素驰怎。
按順序依次為
秒(0~59)
分鐘(0~59)
小時(shí)(0~23)
天(月)(0~31事期,但是你需要考慮你月的天數(shù))
月(0~11)
天(星期)(1~7 1=SUN 或 SUN鞋真,MON,TUE,WED窗慎,THU图云,F(xiàn)RI惯悠,SAT)
年份(1970-2099)
其中每個(gè)元素可以是一個(gè)值(如6),一個(gè)連續(xù)區(qū)間(9-12),一個(gè)間隔時(shí)間(8-18/4)(/表示每隔4小時(shí)),一個(gè)列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"這兩個(gè)元素互斥的,必須要對其中一個(gè)設(shè)置?
0 0 10,14,16 * * ? 每天上午10點(diǎn)竣况,下午2點(diǎn)克婶,4點(diǎn)
0 0/30 9-17 * * ? 朝九晚五工作時(shí)間內(nèi)每半小時(shí)
0 0 12 ? * WED 表示每個(gè)星期三中午12點(diǎn)
"0 0 12 * * ?" 每天中午12點(diǎn)觸發(fā)
"0 15 10 ? * *" 每天上午10:15觸發(fā)
"0 15 10 * * ?" 每天上午10:15觸發(fā)
"0 15 10 * * ? *" 每天上午10:15觸發(fā)
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發(fā)
"0 * 14 * * ?" 在每天下午2點(diǎn)到下午2:59期間的每1分鐘觸發(fā)
"0 0/5 14 * * ?" 在每天下午2點(diǎn)到下午2:55期間的每5分鐘觸發(fā)
"0 0/5 14,18 * * ?" 在每天下午2點(diǎn)到2:55期間和下午6點(diǎn)到6:55期間的每5分鐘觸發(fā)
"0 0-5 14 * * ?" 在每天下午2點(diǎn)到下午2:05期間的每1分鐘觸發(fā)
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發(fā)
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發(fā)
"0 15 10 15 * ?" 每月15日上午10:15觸發(fā)
"0 15 10 L * ?" 每月最后一日的上午10:15觸發(fā)
"0 15 10 ? * 6L" 每月的最后一個(gè)星期五上午10:15觸發(fā)
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個(gè)星期五上午10:15觸發(fā)
"0 15 10 ? * 6#3" 每月的第三個(gè)星期五上午10:15觸發(fā)