首先,打开你要发件人的邮箱,这里用 qq 邮箱进行举例:
点击设置,找到账户
找到
点击开启服务
然后会要求你发送短信,完成操作以后,复制好给出的授权码,此授权码就是要在项目中引入的密码。
然后开始编码:首先,引入 SpringBoot-email 的 Maven 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
打开 yml 文件,添加以下字段:
username 是发件人的邮箱
password 是发件人的授权码
mail:
#smtp服务主机 qq邮箱则为smtp.qq.com
host: smtp.qq.com
#服务协议
protocol: smtp
# 编码集
default-encoding: UTF-8
#发送邮件的账户
username: xxxxxxx@qq.com
#授权码
password: xxxxxxxxx
test-connection: true
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
运用面向对象思想,在实体类中创建邮件对象:具体内容见代码注解
package com.demo.qcby.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @Classname ToEmail
* @Description 邮件类
* @Date 2021/9/7 12:13
* @Created by thx
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ToEmail implements Serializable {
// 邮件接收方
private String[] tos;
// 邮件主题
private String subject;
// 邮件内容
private String content;
}
然后就可以进行测试编码了,写一个 测试用的 controller 类:
Springboot 已经给邮件发送进行了非常好的整合,只需要注入邮件发送接口调用其中的方法,就能进行邮件发送
@Resource
private JavaMailSender mailSender;
此字段映射 yml 中的 username,也就是发件人的邮箱
@Value("${spring.mail.username}")
private String from;
完整的 controller 层代码:
@RestController
@RequestMapping("email")
public class EmailController {
// 引入邮件接口
@Resource
private JavaMailSender mailSender;
// 获得发件人信息
@Value("${spring.mail.username}")
private String from;
// 权限字符
@PreAuth("email:send")
@RequestMapping("sendEmail")
public ResultJson commonEmail(ToEmail toEmail) {
// 创建邮件消息
SimpleMailMessage message = new SimpleMailMessage();
// 设置发件人
message.setFrom(from);
// 设置收件人
message.setTo(toEmail.getTos());
// 设置邮件标题
message.setSubject(toEmail.getSubject());
// 设置邮件内容
message.setText(toEmail.getContent());
// 发送邮件
mailSender.send(message);
return ResultJson.success("发送成功");
}
}
可通过 PostMan 进行测试:
测试结果:打开邮箱发现有邮件即可
发送验证码的博客:
https://blog.csdn.net/weixin_45962741/article/details/120157553?spm=1001.2014.3001.5501