SpringBoot中实现发送邮件

devtools/2024/9/25 21:25:51/

概要

在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/devtools/35073.html

相关文章

柯桥西语培训之在西班牙旅游点菜哪些坑不能踩?

Por muy bien que se coma en Espaa —que es mucho— hay una cosa innegable: lo que pasa en la cocina se queda en la cocina. No todos los alimentos son igualmente seguros o sabrosos cuando se encuentran fuera de la comodidad de nuestra propia casa. Ya sea po…

单元测试配置

检查 vendor 目录下 是否有bin目录, bin目录下是否有 phpunit 文件 没有安装 composer require —dev phpunit/phpunit 确认版本是 PHPUnit 9.6.7配置IDE配置php解释器点击绿色箭头,运行测试查看效果备注: 单步调试需要安装 xdebug

Web APIs

一、Web APIs 和基础关联性 1、JS组成 JavaScript由 ECMAScript(JavaScript语法&#xff09;,DOM&#xff08;页面文档对象模型&#xff09;,BOM&#xff08;浏览器对象模型&#xff09; 二、API 和 Web API 1、API 应用程序编程接口 API是给程序员提供的一种工具&#xff0c…

Mybatis高级

1. Mybatis多表查询概念 ​ 在学习多表查询的之前&#xff0c;我们要先明确多表的关系都有哪些&#xff0c;如何划分。 1.1 多表关系的划分 一对一 一对一的关系是两张表之间 A表的一条数据只能对应B表的一条数据。比如 订单表和用户表 一个订单只能属于…

《亲密关系》阅读笔记

0 引言 由于博主的情感关系较少&#xff0c;社交也很少&#xff0c;最近遇到一个女孩子&#xff0c;但是发现自己完全不了解女生&#xff0c;对人与人之间的亲密关系了解太少&#xff0c;对人性的理解太过浅显。因此&#xff0c;开始涉略心理学方面书籍&#xff0c;同时现实中…

04 深入浅出JVM

本课时的主题是 JVM 原理。JVM 是 Java 程序运行基础&#xff0c;面试时一定会遇到 JVM 相关的题。本课时会先对面试中 JVM 的考察点进行汇总介绍。然后对 JVM 内存模型、Java 的类加载机制、常用的 GC 算法这三个知识点进行详细讲解。最后汇总 JVM 考察点和加分项&#xff0c;…

MySQL性能调优全面指南

MySQL作为广泛使用的开源关系型数据库管理系统&#xff0c;其性能调优对于确保数据库高效、稳定运行至关重要。本文将介绍MySQL性能调优的多个方面&#xff0c;包括查询性能调优策略、服务器性能调优&#xff08;内存、CPU、I/O等&#xff09;&#xff0c;以及监控工具如Percon…

getchar和putchar函数详解

getchar和putchar函数详解 1.getchar函数1.1函数概述1.2函数返回值1.3函数注意事项1.4函数的使用 2.putchar函数2.1函数概述2.2函数返回值2.3函数使用实例 1.getchar函数 1.1函数概述 从一个流中读取一个字符&#xff0c;或者从标准输入中获得一个字符 函数原型&#xff1a; …