一.maven依赖:
<!-- 邮件发送 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
二.配置文件:
##邮箱账号 我这里使用的是QQ邮箱哦
spring.mail.username= "yourMailId"
##邮箱密码(或者QQ邮箱授权码,QQ邮箱必须是授权码哦)
spring.mail.password= "yourMailPasswold"
##邮箱服务器地址
spring.mail.host=smtp.qq.com
##邮箱端口号
spring.mail.port=465
##编码格式
spring.mail.default-encoding=UTF-8
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.ssl.enable=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
三.实现:
1.普通发送邮件(测试类):
package com.example.demo.run.mail;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
@SpringBootTest
public class RunTextMail {
@Autowired
private JavaMailSender javaMailSender;
@Test
public void contextLoads() {
SimpleMailMessage message = new SimpleMailMessage();
message.setSubject("邮件主题");
message.setText("邮件文本内容");
//发件人邮箱账号
message.setFrom("xxx@qq.com");
//收件人邮箱账号
message.setTo("yyy@qq.com");
javaMailSender.send(message);
}
}
2.异步定时发送带内联附件的邮件(业务类):
package com.example.demo.run.mail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@Service
public class SchedulingMailService {
@Autowired
private JavaMailSender javaMailSender;
//异步注解
@Async
//定时任务注解
@Scheduled(cron="* * * * * ?")
public void runSchedulingMail() throws MessagingException {
//延时10s
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true);
//发件人邮箱账号
mimeMessageHelper.setFrom("xxx@qq.com");
//收件人邮箱账号
mimeMessageHelper.setTo("yyy@qq.com");
//邮件主题
mimeMessageHelper.setSubject("异步发送邮箱哦");
//邮件内容
mimeMessageHelper.setText("<h1>我是内容,我也是html的h1标题,当然我还带了附件的呢</h1>",true);
//获取本地系统资源
FileSystemResource resource = new FileSystemResource(new File("F://test.png"));
//内联
mimeMessageHelper.addInline("test.png",resource);
//附件
mimeMessageHelper.addAttachment("text.png",resource);
//发送
javaMailSender.send(mimeMessage);
}
}