使用 Spring Boot 发送电子邮件(SMTP 集成)

        本文探讨了 Spring Boot 与 SMTP 的集成以及如何从您自己的 Spring Boot 应用程序发送电子邮件。

        本文探讨如何从您自己的Spring Boot应用程序发送电子邮件。
        是的,您可以拥有专用的 REST API,它接受电子邮件发送者和接收者的电子邮件地址、主题和正文——构成商务电子邮件的经典属性。然后,您的前端团队可以通过传递必要的参数来随意调用此 API,瞧!您的电子邮件已轻松发送。
        Spring Boot 提供了内置依赖项,其中包含所有必需的方法。这可用于将电子邮件发送到有效的电子邮件地址。它完全免费,并且非常容易与经典Spring Boot应用程序集成。
        在本文中,我们将了解如何从简单的 Spring Boot 应用程序发送电子邮件。
        Spring 使用SimpleMailMessage并通过集成来实现它 spring-boot-starter-mail.
        那么,让我们开始吧。

步骤1

        前往start.spring.io并创建一个新的 Spring Boot 项目,仅包含以下依赖项

  • Spring web
  • Java Mail sender

        单击“生成项目”。这将创建一个 zip 文件,将其解压并在 IntelliJ 中打开它。
        此时,您已经有了一个基本的Spring Boot项目。只需点击播放按钮启动应用程序即可确保一切正常运行。

 

第 2 步:配置我们的电子邮件服务器

        接下来,我们需要提供 Spring Mail 的配置。只需将电子邮件配置的以下属性添加到application.properties文件中即可:

# email configsspring.mail.host=smtp.gmail.comspring.mail.username=<your email id>spring.mail.password=<your password>spring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=true

步骤3

完成所有必需的配置后,我们就可以公开我们的其余端点/邮件,它将接受传入请求以将电子邮件发送到特定电子邮件地址。

让我们为控制器层添加以下代码,以便能够访问我们的 API,这将触发电子邮件。

@RestController
public class EmailController {@Autowiredprivate EmailService emailService;@PostMapping("/mail")public void sendEMail(@RequestBody EmailRequest emailRequest) {System.out.println("Going to Send email: " + emailRequest.toString());emailService.sendEmail(emailRequest);}
}

正如我们所看到的,控制器期望名为的请求对象EmailRequest.

因此,为电子邮件请求创建一个请求正文,其中包含以下属性来标识电子邮件:

public class EmailRequest {// Class data membersprivate String recipient;private String msgBody;private String subject;private String attachment;//generate getters 
}

服务层

我们来说一下实现类。它将包含一个对象,该对象JavaMailSender具有一个名为的方法send(),该方法具有以下签名:

void send(SimpleMailMessage simpleMessage) throws MailException;

该类SimpleMailMessage来自包  "org.springframework.mail"

它具有发件人、收件人、文本和主题等属性。我们根据传入的请求设置所有这些重要属性。如下所示,最终将使用'javaMailSender'来触发 send 方法。

@Service
public class EmailServiceImpl implements EmailService {@Autowiredprivate JavaMailSender javaMailSender;@Overridepublic void sendEmail(EmailRequest emailRequest) {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom("abc@xyz");mailMessage.setTo(emailRequest.getRecipient());mailMessage.setText(emailRequest.getMsgBody());mailMessage.setSubject(emailRequest.getSubject());javaMailSender.send(mailMessage);}
}

至此,我们就完成了!启动应用程序并前往 Postman。我们使用 spring 的默认端口(8080),因此调用 APIlocalhost:8080/mail

从 Postman 调用 API 如下:

 

结论

在本文中,我们学习了一种从 Spring Boot 应用程序发送电子邮件的简单方法。它使用 JMSJavaMailSender通过简单的 REST API 发送电子邮件。 

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

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

相关文章

图的遍历之 深度优先搜索和广度优先搜索

深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search)&#xff0c;和树的先序遍历比较类似。 它的思想&#xff1a;假设初始状态是图中所有顶点均未被访问&#xff0c;则从某个顶点v出发&#xff0c;首先访问该顶点&#xff0c;然后依次从它的各…

虹科新闻 | 虹科与Power-MI正式建立合作伙伴关系

近日&#xff0c;虹科与Power-MI正式建立合作伙伴关系&#xff0c;双方就工业预测性维护领域进行深入的交流与合作&#xff0c;未来将共同致力于为亚洲市场提供完整的、更高质量的预测性维护解决方案&#xff0c;解决亚洲客户的工业自动化挑战。 虹科与Power-MI都表示十分期待…

(2023Arxiv)Meta-Transformer: A Unified Framework for Multimodal Learning

论文链接&#xff1a;https://arxiv.org/abs/2307.10802 代码链接&#xff1a;https://github.com/invictus717/MetaTransformer 项目主页&#xff1a;https://kxgong.github.io/meta_transformer/ 【注】&#xff1a;根据实验结果来看&#xff0c;每次输入一种数据源进行处…

【uniapp】一文读懂app端安装包升级

一、前言 首先&#xff0c;在app端开发上线的过程中&#xff0c;会面临一个问题&#xff0c;就是关于app端的版本升级的问题。如果不做相关处理来引导用户的话&#xff0c;那么app就会出现版本没有更新出现的各种问题&#xff0c;我们常见的有在线升级和去指定地址下载安装两种…

【JPCS出版】第五届能源、电力与电网国际学术会议(ICEPG 2023)

第五届能源、电力与电网国际学术会议&#xff08;ICEPG 2023&#xff09; 2023 5th International Conference on Energy, Power and Grid 最近几年&#xff0c;不少代表委员把目光投向能源电力领域&#xff0c;对促进新能源发电产业健康发展、电力绿色低碳发展&#xff0c;提…

0基础学习VR全景平台篇 第81篇:全景相机-临云镜如何直播推流

临云镜全景相机是阿里巴巴定制全景设备&#xff0c;实现空间三维信息的快速采集&#xff0c;与阿里云三维空间重建平台搭配&#xff0c;帮助品牌商与平台以较低的成本完成空间的快速采集&#xff0c;并支持对室内/室外空间的三维全景展示及空间漫游&#xff0c;同时支持VR浏览、…

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet&#xff08;Selective Kernel Network&#xff09;是一种用于图像分类和目标检测任务的深度神经网络架构&#xff0c;其核心创新是引入了选择性的多尺度卷积核&#xff08;Selective Kernel&#xff09;以及一种新颖的注意力机制&#xff0c;从而在不增加网络复杂性的情况…

利用Halcon绘制ROI区域或Mask区域

利用Halcon绘制ROI区域或Mask区域 概述内容补充参考老版本的ROI绘制&#xff08;Halcon 12-17&#xff09; 概述 ROI是Halcon中的一个很重要的概念&#xff0c;为了减少计算量&#xff0c;只关注待检测物体或该物体周围的一片区域即可&#xff0c;ROI就是图像处理所关注的区域…

LC-1289. 下降路径最小和 II(记忆化搜索==> 动态规划)

1289. 下降路径最小和 II 难度困难108 给你一个 n x n 整数矩阵 grid &#xff0c;请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下降路径 定义为&#xff1a;从 grid 数组中的每一行选择一个数字&#xff0c;且按顺序选出来的数字中&#xff0c;相邻数字不在原数组…

vue 项目中 utils 中 js 文件早于 main.js 文件调用

vue项目中utils中js文件早于main.js文件调用

Kotlin反射访问androidx.collection.LruCache类私有变量

Kotlin反射访问androidx.collection.LruCache类私有变量 androidx.collection.LruCache类中定义了一个名为map的LinkedHashMap&#xff0c;map存储了所有LruCache的数据&#xff0c;有时候需要遍历访问该LinkedHashMap&#xff0c;取出里面的值&#xff0c;但是LruCache代码实…

LVS—DR集群的搭建

目录 lvs-dr模式工作原理&#xff1a; 搭建结构&#xff1a; 1、RS&#xff1a; 1&#xff09;两台RS准备好httpd环境和测试文件 2&#xff09;添加虚拟IP&#xff08;vip&#xff09;、添加访问本地vip的静态路由 并抑制ARP 2、DS&#xff1a; 1&#xff09;安装ipvasadm…

(el-switch)操作:Element-plus 中 Switch 将默认值修改为 “true“ 与 “false“(字符串)来控制开关

Ⅰ、Element-plus 提供的 Switch 开关组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Switch 组件情况&#xff1a; 其一、Element-ui 自提供的 Switch 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…

EPS FB 2.5S返回时延占比提升

一、 EPS FB 2.5s指标现状 3月初某区域的EPS FB返回时延占比为82.7%左右&#xff0c;离目标值83.98%还有1.2%。 二、 原因分析 EPS FB语音挂机后&#xff0c;UE在LTE恻可以通过快速返回Fast Return功能快速回到SA模式&#xff0c;4G侧快速返回功能为: 1、NR Coverage-Trigger…

前端先行模拟接口(mock+expres+json)

目录 mock模拟数据&#xff1a;data/static.js 路由&#xff1a;index.js 服务器&#xff1a;server.js yarn /node 启动服务器&#xff1a;yarn start 客户端&#xff1a;修改代理路径(修改设置后都要重启才生效) 示例 后端框架express构建服务器 前端发起请求 静态数…

【SpringCloud】Gateway服务网关

Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 1.为什么需要网关…

【网站搭建】开源社区Flarum搭建记录

环境 服务器系统&#xff1a;腾讯云 OpenCloudOS 宝塔版本&#xff1a;免费版8.0.1 Nginx&#xff1a;1.24.0 MySQL&#xff1a;5.7.42 PHP&#xff1a;8.1.21 萌狼蓝天 2023年8月7日 PHP设置 1.安装扩展&#xff1a;flieinfo、opcache、exif 2.解除禁用函数&#xff1a;putenv…

无涯教程-Perl - endservent函数

描述 此功能告诉系统您不再期望使用getservent从服务文件中读取条目。 语法 以下是此函数的简单语法- endservent返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perlwhile(($name, $aliases, $port_number,$protocol_name)getservent())…

【LeetCode 75】第二十五题(735)行星碰撞

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码运行结果&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给一个数组&#xff0c;数组里的元素表示行星&#xff0c;元素的符号决定行星运动的方向&#xff0c;元素的绝对值决定行星的大小…

知网期刊《中阿科技论坛》简介及投稿须知

知网期刊《中阿科技论坛》简介及投稿须知 主管单位&#xff1a;宁夏回族自治区科学技术厅 主办单位&#xff1a;宁夏回族自治区对外科技交流中心(中国一阿拉伯国家技术转移中心) 刊  期&#xff1a;月刊 国际刊号&#xff1a;ISSN 2096-7268 国内刊号&#xff1a;CN 64-…