SpringBoot中实现发送邮件

news/2024/9/24 0:57:36/

概要

在Spring Boot中发送电子邮件相对简单。你可以使用Spring的邮件支持来实现这一点。

步骤:

1.添加依赖:首先,需要在你的pom.xml文件中添加Spring Boot的邮件发送器依赖。
2. 配置邮件服务器:在application.properties或application.yml中配置邮件服务器的相关信息。
3. 编写发送邮件的代码:创建一个服务类来封装邮件发送的逻辑。

JavaMailSender接口

在Spring框架中,JavaMailSender 是一个接口,用于发送电子邮件 。

Spring Boot的spring-boot-starter-mail模块提供了自动化配置,简化了在Spring Boot应用程序中发送电子邮件的设置过程。

当你添加了spring-boot-starter-mail依赖后,Spring Boot会自动配置JavaMailSender实例,并根据application.yml文件中的属性来配置这个实例。你可以直接在需要发送邮件的地方通过@Autowired注解将JavaMailSender实例注入到你的类中,然后使用它来发送邮件。
在这里插入图片描述

SpringBoot中实现发送邮件

第一步添加依赖

注意:我是基于springboot 2.7.17

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.7.1</version></dependency>

获取依赖其他版本的官网:Spring Boot Starter Mail
在这里插入图片描述

配置邮件服务器

QQ邮箱授权码如何获取

在这里插入图片描述

springboot中配置
spring:mail:host: smtp.qq.com  # qq的邮件服务器主机地址 【163网易邮箱的是smtp.163.com】username: 58963727@qq.com  # 登录邮件服务器的邮箱【自己的邮箱】password: axqyweertcentfcy  # 授权码port: 587  # 邮件服务器端口号  【163网易邮箱的是465】smtp:auth: true  # 是否需要身份验证starttls.enabled: true  # 是否启用 STARTTLS 支持default-encoding: utf-8  # 默认邮件编码为 UTF-8
java_51">java代码实现

业务层

java">@Service
public class EmailService {   @Autowiredprivate JavaMailSender emailSender;// 从属性文件中读取发件人地址@Value("${spring.mail.username}")private String from;/*** 发送简单文本邮件* @param to 收件人地址* @param subject 邮件主题* @param text 邮件内容*/public void sendSimpleMessage(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);  // 设置发件人邮箱地址message.setTo(to);  // 设置收件人地址message.setSubject(subject);  // 设置邮件主题message.setText(text);  // 设置邮件内容emailSender.send(message);  // 发送邮件}
}

Controller层

java">@RestController
@RequestMapping
public class EmailController {@Autowiredprivate EmailService emailService;@PostMapping("/sendEmail")public String sendEmail(@RequestBody EmailDTO emailDTO) {emailService.sendSimpleMessage(emailDTO.getTo(), emailDTO.getSubject(), emailDTO.getText());return "Email sent successfully!";}
}

接受前端传过来的json格式的数据

java">@Data
public class EmailDTO {private String to; //表示收件人的电子邮件地址private String subject; //表示邮件的主题private String text; //表示邮件的正文内容
}
效果

这里用POST测试,发送POST请求
在这里插入图片描述

用的网易163邮箱成功接收
在这里插入图片描述

可能遇到错误

用qq邮箱发邮件
错误:com.sun.mail.smtp.SMTPSendFailedException: 502 Invalid input from 39.152.15.45 to newxmesmtplogicsvrszc19-0.qq.com.
在这里插入图片描述

最后解决的方法是在java代码中直接加入发送方的邮箱:
在这里插入图片描述

用网易邮箱发邮件
错误:Got bad greeting from SMTP host: smtp.163.com, port: 465, response: [EOF]
在这里插入图片描述
解决方法,配置文件中补充

spring:mail:protocol: smtps

觉得有用的可以留个关注❤


http://www.ppmy.cn/news/1456639.html

相关文章

C#知识|将选中的账号信息展示到控制台(小示例)

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 上篇学习了控件事件的统一关联&#xff0c; 本篇通过实例练习继续学习事件统一处理中Tag数据获取、对象的封装及泛型集合List的综合运用。 01 实现功能 在上篇的基础上实现&#xff0c;点击选中喜欢的账号&#xff0…

Java解决垂直鉴权问题(对垂直权限进行校验)

Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09; 文章目录 Java解决垂直鉴权问题&#xff08;对垂直权限进行校验&#xff09;前言一、垂直鉴权是什么&#xff1f;二、实现过程1.新建接口权限菜单映射表2.项目初始化时加载接口菜单映射关系3.自定义过滤器拦截…

Elasticsearch中对文章进行索引和查重

解决思路 要在Elasticsearch中对文章进行索引和查重&#xff0c;可以按照以下步骤操作&#xff1a; 安装Elasticsearch并启动服务。 安装Python的Elasticsearch客户端库&#xff0c;可以使用pip install elasticsearch命令进行安装。 编写Python代码&#xff0c;使用Elastic…

我独自升级崛起在哪下载 我独自升级崛起客户端下载教程

定于5月8日全球盛放的《我独自升级&#xff1a;崛起》——这一激动人心的动作角色扮演游戏巨作&#xff0c;汲取了同名动漫及网络漫画的精髓&#xff0c;誓将以其无与伦比的魅力&#xff0c;引领玩家迈入一个探索深远、规模宏大的奇幻之旅。游戏构筑在一个独一无二的网络武侠世…

Vue2之路由跳转传参中文问题处理

Vue2之路由跳转传参中文问题处理 文章目录 Vue2之路由跳转传参中文问题处理1. 问题描述1. 当前vue组件2. 跳转到的vue组件3. 出现的错误 2. 解决方法1. 当前vue组件2. 跳转到的vue组件 1. 问题描述 在el-table中的记录列表中放置了一个 操作按钮&#xff0c;点这个按钮时可以新…

【算法】滑动窗口——无重复字符的最长子串

本篇博客是一篇滑动窗口算法练习题——无重复字符的最长子串的思路详解&#xff0c;从最开始的暴力解法&#xff0c;优化以及怎么想到滑动窗口这种算法的一个详细思路过程&#xff0c;有需要借鉴即可。 目录 1.题目解读2.暴力求解3.暴力求解的优化4.题解代码示例 1.题目解读 题…

第30章-配置4G5G

1. 4G/5G的概念 2. 4G/5G的标准 3. 4G/5G的接入方式 4. 4G/5G的配置 5. 4G/5G的维护命令 1. 4G/5G的概念 1.1 发展历史 3G技术&#xff0c;1985 年提出&#xff0c;2000 年左右才进入商用。 LTE一般被称为 4G&#xff0c;最早由ITU3GPP在2004 年底提出&#xff0c;在 2009 …

STM32控制DS1302时钟模块获取实时时间

欢迎入群共同学习交流 时间记录&#xff1a;2024/4/30 一、知识点 &#xff08;1&#xff09;读写数据时序&#xff08;伪SPI协议&#xff09; 1.1 读写时序默认电平均为SCLK线低电平&#xff0c;CE线低电平 1.2 写数据&#xff0c;CE线拉高为高电平&#xff0c;开始传输数据…