Springboot集成JavaMail Sender发送邮件

1、开启邮箱的POP3/IMAP/SMTP服务,本地客户端可以收发短信

生成授权码

2、添加JavaMail Sender依赖

spring-boot-starter-mail 是 Spring Boot 的一个 Starter,它提供了集成 JavaMail Sender 和对应配置的自动配置。

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

3、application.properties配置

#这里配置的是qq邮箱
spring.mail.host=smtp.qq.com
spring.main.port=465
spring.mail.username=#授权码g,在QQ邮箱客户端生成 修改成自己的  设置-账户-开启服务-获取授权码
spring.mail.password=bhyaiszqhyrqchaj #换成你的授权码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

4、创建邮件工具类

@Autowired
private JavaMailSender mailSender;
//文本内容
public void sendEmail(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("your@qq.com");message.setTo(to);message.setSubject(subject);message.setText(text);mailSender.send(message);
}/**html内容* 使用mailSender.createMimeMessage()方法创建了一个MimeMessage对象。* 然后,通过创建MimeMessageHelper对象,并传入MimeMessage对象,可以使用MimeMessageHelper* 对象的方法来设置邮件的各种属性。* @param to 目标邮箱* @param subject 邮件名* @param text  正文* @throws MessagingException*/
public void sendMineEmail(String to, String subject, String text) throws MessagingException {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper message = new MimeMessageHelper(mimeMessage);message.setFrom("yoru@qq.com");message.setTo(to);message.setSubject(subject);message.setText(text,true);mailSender.send(message.getMimeMessage());}

5、使用thymeleaf模板引擎生成内容并填充到邮件中

5.1、模板文件
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="utf-8"><title>Echo - 激活账号</title>
</head>
<body><div><p><b th:text="${email}"></b>, 您好! 😃</p><p>您正在注册 Echo, 这是一封激活邮件, 请点击<a th:href="${url}">此链接</a>,激活您的 Echo 账号! 🎉</p></div>
</body>
</html>
5.2、service层注入模板引擎,工具类
@Autowired
private TemplateEngine templateEngine;#注入模版引擎
@Autowired
EmailMessageUtil emailMessageUtil;#注入工具类
5.3、准备数据模型,通常是 Context 对象,它用于向模板传递变量。
//向用户邮箱发送邮件,激活账户Context context=new Context();context.setVariable("email", user.getEmail());//http://localhost:9000/active/codeString url="http://"+address+":"+port+"/activation/userId/code";context.setVariable("url", url);//使用模板引擎生成内容String content = templateEngine.process("/mail/activation", context);emailMessageUtil.sendMineEmail(user.getEmail(), "激活账户",content);
5.4、调用service测试

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

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

相关文章

UI自动化Selenium BeautifulReport报告中展示用例描述

BeautifulReport安装并运行后&#xff0c;发现用例描述为空NULL&#xff1b;怎么定义每个Testcase的用例描述并展示在报告中呢&#xff1f; 其实很简单&#xff1a; 只需要在每个测试方法第一行加上注释内容 即可&#xff1b; 当然也可以通过ddt 方式 在Excel中定义好用例描述…

外贸建站服务器如何选?海洋建站主机推荐?

外贸建站用哪个服务器比较好&#xff1f;独立网站怎么选择主机&#xff1f; 随着全球化的趋势&#xff0c;外贸网站的建设越来越受到企业的重视。然而&#xff0c;要想让外贸网站稳定、安全、可靠地运行&#xff0c;选择合适的外贸建站服务器是关键。海洋建站将详细介绍如何选…

【汉诺塔】经典递归问题(Java实现)图文并茂讲解

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢迎各位大佬指点&#…

司铭宇老师:房地产销售新人培训:房地产销售知识

房地产销售新人培训&#xff1a;房地产销售知识 1.客户沟通与谈判技巧 &#xff08;1&#xff09;倾听与理解客户需求 &#xff08;2&#xff09;善于运用FABE法则说服客户 &#xff08;3&#xff09;把握谈判节奏&#xff0c;掌握谈判主动权 &#xff08;4&#xff09;应…

数学建模美赛资料(赛题+获奖论文更新)

数学建模美赛历年真题可以帮助我们了解比赛的出题思路&#xff0c;对建模比赛有一个大致的了解。 在备赛过程中&#xff0c;通过往年真题&#xff0c;我们可以了解考试的范围和重点&#xff0c;做到心中有数&#xff0c;可以有的放矢。通过真题&#xff0c;我们可以感受到各个…

神经网络学习

什么是神经网络 逻辑回归、感知机均只包含一个输入层以及一个输出层,只能处理线性可分问题。如果在输入层与输出层之间加入一层到多层的隐藏层,就会得到神经网络结构。 神经网络一般由输入层、隐藏层、输出层构成,下图展示了其一般结构: 隐藏层之所称之为隐藏层,是因为在…

matlab Robotics Toolbox

工具箱下载地址&#xff1a;ROBOTICS TOOLBOX 安装教程 笛卡尔运动规划 在MATLAB中&#xff0c;ctraj和jtraj是两个不同的函数&#xff0c;主要用于控制系统和机器人学中的轨迹规划。它们之间的主要区别在于它们处理的问题类型和使用方式。 ctraj&#xff08;连续时间轨迹规划…

【gradle使用本地文件】

@[TPC](Gradle 使用本地文件) # distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip distributionUrl=file\:/D:/soft/gradle/gradle-7.4.2-all.zip欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学…

ElasticSearch的常用增删改查DSL和代码

es增删改查常用语法 我们日常开发中&#xff0c;操作数据库写sql倒是不可能忘记&#xff0c;但是操作es的dsl语句有时候很容易忘记&#xff0c;特地记录一下方便查找。 DSL语句 1、创建索引 -- 创建索引 PUT /my_index {"mappings": {"properties": {&…

表的增删改查CURD(基础)

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;MySql&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 新增&#xff08;Create&#xff09; 全列插入 指定列…

2023年移远车载全面开花,智能座舱加速进击

作为汽车智能化的关键组件&#xff0c;车载模组正发挥着越来越重要的作用。 移远通信进入车载模组领域近十年&#xff0c;已形成了完善的车载产品队列&#xff0c;不但在5G/4G车载通信、智能座舱、C-V2X车路协同等领域打造了一枝独秀的产品线&#xff0c;也推出了车规级Wi-Fi/蓝…

VTK读取文件时显示无法找到(如.stl not found)解决方案

问题&#xff1a; //读取模型文件vtkSmartPointer<vtkSTLReader> obj vtkSmartPointer<vtkSTLReader>::New();obj->SetFileName("D:\ct\20201102113826651_3d\pelvis.stl"); 在VTK项目运行读取模型文件的代码时&#xff0c;出现以下问题&#xff1a…