《零散知识点 · SpringBoot 整合邮件功能》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗

🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

写在前面的话

此篇博文简单介绍一下如何使用 SpringBoot3 整合邮件发送功能。


整合发邮件

很简单,没什么复杂的,直接上实现。

实现步骤

Step1、引入依赖:

xml 复制代码
<!-- 整合邮件发送 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

Step2、增加配置(以发送方是163邮箱为例):

java 复制代码
spring:
  mail:
    host: smtp.163.com 
    username: 邮箱账户
    password: 邮箱密码 # 注意,这里是客户端授权密码,不是密码,否则出现错误535
    default-encoding: UTF-8
    notice: 发送列表

Step3、编写测试代码

注入JavaMailSender ,封装好实体,触发调用即可。

java 复制代码
/**
 * 邮件发送地址(配置的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

绑定手机之后出现这个,把密码换成授权码就可以了。

相关推荐
JIngJaneIL9 分钟前
智慧物业|物业管理|基于SprinBoot+vue的智慧物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·论文·智慧物业管理系统
ANYOLY21 分钟前
Redis 面试题库
java·redis·面试
凌览27 分钟前
一键去水印|5 款免费小红书解析工具推荐
前端·javascript·后端
枫叶梨花28 分钟前
一次 Kettle 中文乱码写入失败的完整排查实录
数据库·后端
expect7g28 分钟前
Paimon源码解读 -- PartialUpdateMerge
大数据·后端·flink
懒惰蜗牛29 分钟前
Day63 | Java IO之NIO三件套--选择器(下)
java·nio·选择器·selector·半包粘包·tcp缓冲区
申阳33 分钟前
Day 16:02. 基于 Tauri 2.0 开发后台管理系统-项目初始化配置
前端·后端·程序员
bcbnb34 分钟前
游戏上架 App Store 的完整发行流程,从构建、合规到审核的多角色协同指南
后端
A3608_(韦煜粮)34 分钟前
深入理解 Spring Boot 自动配置:原理、定制与最佳实践摘要
spring boot·自动配置·自定义starter·源码解析·条件注解·spring框架·java配置
JavaGuide35 分钟前
美团2026届后端一二面(附详细参考答案)
java·后端