📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗
🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍
写在前面的话
此篇博文简单介绍一下如何使用 SpringBoot3 整合邮件发送功能。
整合发邮件
很简单,没什么复杂的,直接上实现。
实现步骤
Step1、引入依赖:
<!-- 整合邮件发送 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Step2、增加配置(以发送方是163邮箱为例):
spring:
mail:
host: smtp.163.com
username: 邮箱账户
password: 邮箱密码 # 注意,这里是客户端授权密码,不是密码,否则出现错误535
default-encoding: UTF-8
notice: 发送列表
Step3、编写测试代码
注入JavaMailSender ,封装好实体,触发调用即可。
/**
* 邮件发送地址(配置的163邮箱)
*/
@Value("${spring.mail.username}")
private String sender;
/**
* 邮件通知地址列表(配置的管理员接收邮箱)
*/
@Value("${spring.mail.notice}")
private String receiveList;
/**
* 邮件服务
*/
@Resource
private JavaMailSender mailSender;
@ResponseBody
@RequestMapping("/sendEmail")
public String sendEmail() {
try {
long start = System.currentTimeMillis();
SimpleMailMessage message;
String[] receiveArr = receiveList.split(",");
for (String receive : receiveArr) {
message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(receive);
message.setSubject("邮件主题");
String code = RandomUtil.randomString(6);
message.setText("邮件内容" + code);
mailSender.send(message);
}
long end = System.currentTimeMillis();
log.info("完成发送邮件任务,耗时:" + (end - start) + "毫秒");
} catch (Exception e) {
log.error("邮件发送异常", e);
}
return "OK";
}
常见问题
1、javax.mail.AuthenticationFailedException: 550 User has no permission
很久没跑了,某次运行突然提示了这个,查了一下,是163邮箱这边要去开启POP3/SMTP服务,就是设置一下绑定手机。
2、javax.mail.AuthenticationFailedException: 535 Error: authentication failed
绑定手机之后出现这个,把密码换成授权码就可以了。