Spring Boot 发送邮件

Spring Boot 发送邮件

    • 准备工作
      • 引入依赖
      • 邮箱开启SMTP三方登录授权
      • 配置邮件服务器
    • 发送邮件
      • 普通文本邮件
      • 复杂邮件

准备工作

引入依赖

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

邮箱开启SMTP三方登录授权

常用邮箱有开启SMTP授权引导;QQ邮箱

配置邮件服务器

spring:mail:host: smtp.qq.com# 未开启ssl 使用 25,开启ssl 使用 465 或 587port: 465username: xxxpassword: xxxproperties:mail.smtp.auth: true# 开启ssl 上面 port 使用 465 或 587;不开启使用 25mail.smtp.ssl.enable: true
#      mail.smtp.ssl.trust: ${spring.mail.host}
#      mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
#      mail.smtp.socketFactory.port: 465
#      mail.smtp.starttls.enable: true
#      mail.smtp.starttls.required: true
#      mail.debug: true

发送邮件

普通文本邮件

    SimpleMailMessage message = new SimpleMailMessage();message.setTo("收件人");message.setFrom("发件人");message.setSubject("测试邮件");message.setText("Java 给你发的测试邮件");mailSender.send(message);

复杂邮件

html邮件
含附件的邮件

MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setTo("收件人");
helper.setFrom("发件人");
helper.setSubject("主题");
// html
helper.setText("内容", true);
Path xxxx = Path.of("xxxx");
PathResource file = new PathResource(xxxx);
// 附件
helper.addAttachment(file.getFilename(), file);

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

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

相关文章

物理内存分配

目录 内核物理内存分配接口 内存分配行为&#xff08;物理上&#xff09; 内存分配的行为操作 内存 三个水位线 水线计算 水位线影响内存分配行为 内存分配核心__alloc_pages 释放页 1、内核物理内存分配接口 struct page *alloc_pages(gfp_t gfp, unsigned int ord…

Redis 三种特殊的数据类型 - Geospatial地理位置 - Hyperloglog基数统计的算法 - Bitmaps位图(位存储)

目录 Redis 三种特殊的数据类型&#xff1a; Geospatial&#xff1a;地理位置 Geospatial类型常用的命令&#xff1a; GEOADD&#xff1a;添加地理位置 GEOPOS&#xff1a;获取地理位置 GEODIST&#xff1a;返回两个给定位置之间的距离 GEORADIUS&#xff1a;以给定的经纬…

Window server 2008服务器,think-queue自动断开,宝塔redis爬坑记录

Window server 2008服务器,think-queue自动断开,宝塔redis爬坑记录 排查原因问题解决坑爹记录: 错误应用程序名称: redis-server.exe,版本: 0.0.0.0,时间戳: 0x5a604657 错误模块名称: redis-server.exe,版本: 0.0.0.0,时间戳: 0x5a604657 异常代码: 0xc0000005 错误偏…

Seata 源码篇之AT模式启动流程 - 上 - 02

Seata 源码篇之AT模式启动流程 - 02 自动配置两个关键点 初始化初始化TM初始化RM初始化TC 全局事务执行流程TM 发起全局事务GlobalTransactional 注解处理全局事务的开启 TM 和 RM 执行分支事务IntroductionDelegatingIntroductionInterceptorDelegatePerTargetObjectIntroduct…

java手写并查集算法应用拓展案例

Java手写并查集算法应用拓展案例 1. 并查集算法应用思路 并查集是一种用于处理不相交集合的数据结构&#xff0c;它支持合并&#xff08;union&#xff09;和查找&#xff08;find&#xff09;两种操作。并查集常用于解决集合合并、连通性问题等。 并查集算法的应用拓展案例主…

在华为云服务器上CentOS 7安装单机版Redis

https://redis.io/是官网地址。 点击右上角的Download。 可以进入https://redis.io/download/——Redis官网下载最新版的网址。 然后在https://redis.io/download/页面往下拉&#xff0c;点击下图超链接这里。 进入https://download.redis.io/releases/下载自己需要的安装…

【C语言】自定义类型:结构体【结构体内存具详细】,枚举,联合

目录 一、结构体 1.结构的声明 2.特殊的声明 3.结构的自引用 4.结构体变量的定义和初始化 5.结构体内存对齐&#xff08;重点来了&#xff09; 6.为什么会存在内存对齐 7.修改默认对齐数 8.结构体传参 二、位段 1.什么是位段 2.位段的内存分配 3.位段的跨平台问题…

ajax day4

1、promise链式调用 /*** 目标&#xff1a;把回调函数嵌套代码&#xff0c;改成Promise链式调用结构* 需求&#xff1a;获取默认第一个省&#xff0c;第一个市&#xff0c;第一个地区并展示在下拉菜单中*/let pname axios({url: http://hmajax.itheima.net/api/province,}).t…

21天学会C++:Day11----运算符重载

CSDN的uu们&#xff0c;大家好。这里是C入门的第十一讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 知识引入 2. 运算符重载 2.1 operator<() 2.2 operator() 2.3 o…

jvm中对象创建、内存布局以及访问定位

对象创建 Java语言层面&#xff0c;创建对象通常&#xff08;例外&#xff1a;复制、反序列化&#xff09;仅仅是一个new关键字即可&#xff0c;而在虚拟机中&#xff0c;对象&#xff08;限于普通Java对象&#xff0c;不包括数组和Class对象等&#xff09;的创建又是怎样一个过…

寄存器介绍

目录 寄存器的概念 寄存器工作原理 寄存器的状态 查看寄存器信息 寄存器复位 大空间寄存器复位 寄存器的概念 寄存器是计算机中一种临时存储数据的硬件设备&#xff0c;通常是高速缓存的一部分&#xff0c;用于存储、读取和操作计算机内部的数据。它们是计算机中最快的存…

小米华为,化干戈为玉帛!

近日来&#xff0c;手机圈又掀起了各大厂家推出新品的高潮。首先是华为Mate60的推出&#xff0c;其自研的麒麟9000S芯片瞬间点燃了国内手机市场&#xff0c;得到了国内甚至国外业界人士的认可和好评。 而近日网上盛传的小米创始人雷军的“愿意加入华为技术生态圈”的邀请&…

AtCoder ARC106 E Hall 定理 + 二分 + 容斥原理 + 高维前后缀和

题意 传送门 AtCoder ARC106 E Medals 题解 问题可以转化为每一天与职员之间的匹配问题&#xff0c;思路与 AtCoder ABC320 G Slot Strategy 2 (Hard) 类似。但二分图规模过大&#xff0c;直接求解最大匹配显然难以胜任。 根据 Hall 定理&#xff0c;若二分图一侧点集 S S…

JS操作字符串方法学习系列(4)-每天学习10个方法

目录 **字符串编码 (encodeURIComponent 和 decodeURIComponent)**:**字符串转换为日期 (Date Parsing)**:**字符串模板引擎 (Template Engines)**:**字符串替换所有匹配项 (replaceAll)**:**字符串分隔并限制 (String.prototype.split)**:**字符串转义字符 (Escape Characters…

Redis缓存实现及其常见问题解决方案

随着互联网技术的发展&#xff0c;数据处理的速度和效率成为了衡量一个系统性能的重要指标。在众多的数据处理技术中&#xff0c;缓存技术以其出色的性能优化效果&#xff0c;成为了不可或缺的一环。而在众多的缓存技术中&#xff0c;Redis 以其出色的性能和丰富的功能&#xf…

JDK jps命令复习

之前写过jdk命令工具的博文&#xff0c;下面复习jps命令&#xff1b; jps 是 Java Process Status Tool 的简称,它的作用是为了列出所有正在运行中的 Java 虚拟机进程和相关信息&#xff1b; jps 命令参数 -q 只输出进程 ID,省略主类的名称 -m 输出虚拟机进程启动时传递…

C#使用OpenCv(OpenCVSharp)图像轮廓凸包检测与绘制

本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像凸包轮廓检测与绘制。 找轮廓 public static void FindContours(InputArray image, out Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes mode, ContourApproximationModes method, Point? of…

python经典百题之求前!的和

题目&#xff1a;求12!3!…20!的和 方法一&#xff1a; 使用for循环和阶乘函数计算每项的值&#xff0c;再将每项的值累加起来。 def factorial(n):if n 0:return 1else:return n * factorial(n-1)sum 0 for i in range(1, 21):sum factorial(i) * iprint(sum)优点&#…

Vue-DPlayer详细使用(包含遇到坑)

Vue-DPlayer&#xff1a;一个优秀的视频播放器组件 Vue-DPlayer是一个易于使用、高性能的基于Vue.js的视频播放器组件。如果你需要在你的Vue.js应用程序中实现视频播放功能&#xff0c;那么Vue-DPlayer就是一个很好的选择。在下面的文章中&#xff0c;我们将从以下四个方面对V…

AG35学习笔记(一):debug串口抓取模组log、debug串口测试AT指令、echo命令通过串口发送16进制数据

目录 一、概述二、抓取模组log2.1 硬件接口2.2 用户登录2.3 相关指令 三、测试AT指令3.1 查看端口3.2 进入模式 四、串口发16进制echo使用 一、概述 二、抓取模组log 在之前记录了通过USB&#xff0c;使用移远工具Qwinlog来抓取log&#xff08;3.3 抓取模组log&#xff09;。…