SpringBoot项目如何实现邮件发送

文章目录

    • 1. 开启邮箱SMTP服务
    • 2. 导入pom依赖
    • 3. 在配置文件中添加邮箱配置
    • 3. 封装EmailTask类
    • 4. 写测试类

1. 开启邮箱SMTP服务

这里以163邮箱为例,点击设置——更多设置——POP3/SMTP/IMAP——开启服务
在这里插入图片描述
根据提示开启服务之后会得到一个授权码,只显示一次,需要把这个授权码记下来。
接下来看看如何在SpringBoot项目中实现发送邮件功能~

2. 导入pom依赖

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

3. 在配置文件中添加邮箱配置

在配置文件中添加邮箱相关配置(这里使用的是yml配置文件):

spring:    mail:default-encoding: UTF-8host: smtp.163.comusername: 你的邮箱用户名@163.compassword: 上一步得到的授权码system:email: 你的邮箱用户名@163.com

注意:只能在spring.mail下配置SMTP服务器的连接信息,否则之后运行会报错No qualifying bean of type org.springframework.mail.javamail.JavaMailSender。并且这里的password是授权码,而不是你的邮箱密码。
此外,可以配置用于发件的邮箱便于项目其他地方使用,位置可以自定义。

3. 封装EmailTask类

封装EmailTask类方便使用:

@Component
public class EmailTask implements Serializable {@Autowiredprivate JavaMailSender javaMailSender;@Value("${system.email}")private String mailbox;public void sendEmail(SimpleMailMessage message){message.setFrom(mailbox);// 抄送给自己message.setCc(mailbox);javaMailSender.send(message);}
}

有时候可能会将我们发送的邮件标记为垃圾邮件,这里抄送给自己便于查看。

4. 写测试类

SpringBoot测试类中写一个方法测试邮件发送功能:

@SpringBootTest
class EmosWxApiApplicationTests {@Autowiredprivate EmailTask emailTask;@Testvoid sendEmail() {SimpleMailMessage msg = new SimpleMailMessage();msg.setTo("收件邮箱地址");msg.setSubject("Testing Email");msg.setText("Hello World");emailTask.sendEmail(msg);}
}

运行test方法,测试了发送给自己的163邮箱和qq邮箱,成功收到邮件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/822433.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(通义千问,miyagpt,AlchatOS,aitianhu1,a1r,1ai)分享6个好用的GPT

目录 1、通义千问 (aliyun.com) 2、MIYAGPT (miyadns.com) 3、AIchatOS 4、 Safeline Waf CE (aitianhu1.top)

数据库:SQL分类之DCL详解

1.管理用户 1.查询用户 use mysql ; select * from user ; 2.创建用户 create user 用户名主机名 identified by 密码 ; 例&#xff1a; //创建用户itcast ,只能够在当前主机local host访问&#xff0c;密码123456 create user itcastlocalhost identified by 123456;//创建用…

postgreSql判断表是否存在某个字段

在PostgreSQL中&#xff0c;可以使用information_schema.columns视图来检查表是否存在某个字段。以下是一个SQL查询示例&#xff0c;它检查名为sys_statlog的表中是否存在名为origin_type的字段&#xff1a; SELECT EXISTS (SELECT 1FROM information_schema.columnsWHERE tab…

攻防演练,现在收到通知服务器已经被攻破,作为蓝方,怎么检查服务器被攻破的痕迹

在攻防演练中&#xff0c;如果您的服务器被告知已经被攻破&#xff0c;重要的是要快速并系统地响应&#xff0c;以确定攻击的范围、方法和影响。这包括确认攻击的痕迹、哪些数据可能被访问或盗取&#xff0c;以及如何尽快恢复安全状态。以下是一系列步骤和建议&#xff0c;帮助…

Cisco ACI使用Postman配置交换机-未完待续

先看下不使用脚本的情况下是怎么配置交换机端口的&#xff1f; 例&#xff1a; 有10个交换机接口要开trunk&#xff0c;透传50个vlan&#xff0c; 使用GUI的操作方式为 1 进入EPG -->Static port 2 右键&#xff0c;绑定接口 3 选中node -->指定接口—>指定vlan —>…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列&#xff0c;该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

JAVA后端面试

一、基础 1、创建对象的方法 new、反射、clone、反序列化 Class cl Class.forName("TestMe"); 2、有哪些引用类型 强引用、软引用、弱引用、虚引用 3、JVM 类加载机制 双亲委派机制&#xff08;Parent-Delegate Model&#xff09;是Java类加载器中采用的一种…

hover时预览切换,点击后才正式切换

1、使用CSS的:hover伪类 虽然这不是通过JavaScript或jQuery直接绑定事件&#xff0c;但CSS的:hover伪类可以用来改变元素在鼠标移入和移出时的样式。这种方法主要用于视觉效果的改变&#xff0c;而不是执行复杂的JavaScript逻辑。 #myElement:hover { /* 当鼠标悬停在#myEleme…

【学习笔记】Python大数据处理与分析——pandas数据分析

一、pandas中的对象 1、Series对象 由两个相互关联的数组(values, index)组成&#xff0c;前者&#xff08;又称主数组&#xff09;存储数据&#xff0c;后者存储values内每个元素对应关联的标签。 import numpy as np import pandas as pds1 pd.Series([1, 3, 5, 7])print(…

js如何設置滾動到元素位置

在JavaScript中&#xff0c;你可以使用window.scrollTo()方法或元素的scrollIntoView()方法来设置滚动位置。这些方法允许你将页面滚动到特定的坐标或元素。 使用 window.scrollTo() window.scrollTo() 方法接受两个参数&#xff1a;x坐标和y坐标&#xff0c;分别代表水平滚动…

pyqt的人脸识别 基于face_recognition库

参考文献&#xff1a; 1、python face_recognition实现人脸识别系统_python facerecognition检测人脸-CSDN博客 2、cv2.VideoCapture()_cv2.videocapture(0)-CSDN博客 1、camera.py文件代码如下&#xff1b;目录如下 import sys from PyQt5.QtWidgets import QApplication, …

JS两个按钮水平排列

要使两个按钮在水平方向上对半铺满&#xff0c;你可以使用CSS中的Flexbox布局或Grid布局。下面是使用Flexbox和Grid分别实现的示例代码&#xff1a; Flexbox布局&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF…

NineData正式将SQL开发正式升级为数据库DevOps

NineData SQL 开发早期主要提供 SQL 窗口&#xff08;IDE&#xff09;功能&#xff0c;产品经过将近两年时间的打磨&#xff0c;新增了大量的企业级功能&#xff0c;时至今日已经服务了上万开发者&#xff0c;覆盖了数据库设计、开发、测试、变更等生命周期的功能。 为了让企业…

深入理解数据结构第五弹——排序(2)——快速排序

排序&#xff08;1&#xff09;&#xff1a;深入了解数据结构第四弹——排序&#xff08;1&#xff09;——插入排序和希尔排序-CSDN博客 前言&#xff1a; 在前面我们已经讲过了几种排序方式&#xff0c;他们的效率有快有慢&#xff0c;今天我们来学习一种非常高效的排序方式…

笔记本电脑上的聊天机器人: 在英特尔 Meteor Lake 上运行 Phi-2

对应于其强大的能力&#xff0c;大语言模型 (LLM) 需要强大的算力支撑&#xff0c;而个人计算机上很难满足这一需求。因此&#xff0c;我们别无选择&#xff0c;只能将它们部署至由本地或云端托管的性能强大的定制 AI 服务器上。 为何需要将 LLM 推理本地化 如果我们可以在典配…

Hudi 表支持多种查询引擎对比

Hudi 表支持多种查询引擎对比 Apache Hudi有两种主要的表类型&#xff0c;分别是Copy on Write&#xff08;COW&#xff09;表和Merge on Read&#xff08;MOR&#xff09;表。 Copy on Write&#xff08;COW&#xff09;表&#xff1a; 特点&#xff1a;COW表在写入新数据时会…

windows下使用nginx设置静态资源路由

1、下载nginx http://nginx.org/en/download.html 下载稳定版本&#xff0c;以nginx/Windows-1.24.0为例&#xff0c;下载后解压&#xff0c;解压后如下&#xff1a; 2、启动nginx 打开cmd命令窗口&#xff0c;切换到nginx解压目录下&#xff1a; start nginx # 启动nginx服务…

OpenWrt 多拨负载均衡不起作用

检查 负载均衡->规则->Https->粘滞模式 是否启动&#xff0c;设置为 否 如果设置为是&#xff0c;那么根据官方描述&#xff1a; 来自相同源 IP 的流量&#xff0c;如果已经匹配过此规则并且在粘滞超时时间内&#xff0c;将会使用相同的 WAN 接口 意思就是如果你同一个…

实验六 智能手机互联网程序设计(微信程序方向)实验报告

实验目的和要求 请完成创建图片库应用&#xff0c;显示一系列预设的图片。 提供按钮来切换显示不同类别的图片。 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; 1.WXML <view> <button bindtap"showAll">所有图片</but…

小程序视频怎么保存到mp4

小程序上的视频如何下载成mp4&#xff0c;本文就将教大家如何将小程序视频保存到mp4&#xff0c;这里要用到一个工具:下载高手 下载高手的文件我已经打包好了 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w6DWf-9Nxw?pwdl09r 提取码&#xff1a;l09r -…