基于Springboot邮件发送实现
1、创建springboot项目,并引入相关依赖依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.greatmap</groupId>
<artifactId>mail</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mail</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、获取QQ邮箱授权码
找到SMTP服务,并开启SMTP服务
QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原始的邮箱密码,这样可以避免使用明文密码。
3、配置application.yml配置文件
spring:
mail:
username: #自己的邮箱帐号
password: #生成的授权码,代替明文的QQ密码
host: smtp.qq.com
4、简单邮件发送
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.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Random;
@SpringBootTest
class MailApplicationTests {
//需要注入JavaMailSenderImpl
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads() {
//创建SimpleMailMessage对象
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom("填写发送方的邮箱地址");
mailMessage.setTo("填写接收方的邮箱地址");
mailMessage.setSubject("学习邮件发送"); //邮件的标题
mailMessage.setText("准备作为邮件验证码使用!!!"); //邮件内容
javaMailSender.send(mailMessage); //发送
}
}
5、复杂邮件发送
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.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Random;
@SpringBootTest
class MailApplicationTests {
//注入JavaMailSenderImpl
@Autowired
JavaMailSenderImpl javaMailSender;
@Test
void contextLoads2() {
//创建MimeMessage 对象
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
//创建MimeMessageHelper 对象
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage);
String name = "Harris";
String code = "123456";
try {
helper.setFrom("填写发送方的邮箱地址");
helper.setTo("填写接收方的邮箱地址");
helper.setSubject("复杂邮件学习"); //邮件标题
helper.setText("<p>你好," + "<span style='color:blue;'>" + name + "</span>" + "</p>" +
"<p> 您的验证码为" + "<span style='color:blue;'>" +code + "</span>" + "由于该验证码涉及账户安全,请不要随意告诉他人!</p>", true); //邮件内容,如果为true则表示开启html解析
} catch (MessagingException e) {
e.printStackTrace();
}
javaMailSender.send(mimeMessage); //发送
}
}