SpringBoot+Email发送邮件

引言

邮件通知是现代应用中常见的一种通信方式,特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能,使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送,以构建一个可靠的通知体系。

使用场景举例:

  1. 注册验证:在用户注册各种账户时,通过邮件发送验证码进行身份确认和账户激活。
  2. 网站营销:向潜在客户或已有用户发送营销信息或者广告邮件。
  3. 身份安全验证:在用户修改密码、解锁账户等关键操作时,通过邮件发送安全验证码来增强账户的安全性。
  4. 普通文本邮件、HTML内容板式邮件、包含静态资源邮件以及带附件邮件的发送:可以满足不同类型邮件的发送需求。

步骤一:引入邮件发送依赖

在Spring Boot项目的pom.xml文件中引入邮件发送所需的依赖:

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

步骤二:配置邮件发送参数

application.propertiesapplication.yml中配置邮件发送的相关参数,包括邮件服务器主机、端口、账户信息等:

spring:mail:host: smtp.163.comusername: *****@163.compassword: *****port: 25

步骤三:创建邮件发送服务

创建一个邮件发送的服务类,使用JavaMailSender进行邮件发送:

public interface SendMailService {public String sendSimpleMail(String address, String subject, String body);public String sendAttachmentMail(String address, String subject, String body, MultipartFile attach) throws MessagingException, IOException;
}
@Service
public class SendMailServiceImpl implements SendMailService {@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String account;/*** @param address 收件地址* @param subject 标题* @param body    正文* @return*/@Overridepublic String sendSimpleMail(String address, String subject, String body) {SimpleMailMessage smm = new SimpleMailMessage();smm.setFrom(account);smm.setTo(address);smm.setSubject(subject);smm.setText(body);javaMailSender.send(smm);return "发送成功";}/*** @param address 收件地址* @param subject 标题* @param body    正文* @param attach  附件*/@Overridepublic String sendAttachmentMail(String address, String subject, String body, MultipartFile attach) throws MessagingException, IOException {MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage, true);mimeMessageHelper.setFrom(account);mimeMessageHelper.setTo(new String[]{address});mimeMessageHelper.setSubject(subject);mimeMessageHelper.setText(body);// 获取附件的文件名和后缀名String fileName = attach.getOriginalFilename();String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);// 读取附件内容byte[] bytes = attach.getBytes();// 创建一个新的资源对象来存储附件内容ByteArrayResource attachmentResource = new ByteArrayResource(bytes);// 添加附件,使用完整的文件名(包括后缀名)mimeMessageHelper.addAttachment(fileName, attachmentResource);javaMailSender.send(mimeMailMessage);return "发送成功";}
}

 步骤四:使用邮件发送服务

在需要发送邮件的地方,注入EmailService并调用相应的方法:

@RestController
public class EmailController {@Autowiredprivate SendMailService sendMailService;@RequestMapping("/sendMail")public String sendMail(String address, String subject, String body) {return sendMailService.sendSimpleMail(address, subject, body);}@RequestMapping("/sendMailWithAttachment")public String sendMailWithAttachment(String address, String subject, String body, MultipartFile attach) throws IOException, MessagingException {return sendMailService.sendAttachmentMail(address, subject, body, attach);}
}

测试结果

 

结语

通过本文的介绍,你已经学到了如何在Spring Boot应用中使用JavaMailSender实现邮件发送功能。这个简单而强大的功能可以应用于各种场景,如用户注册、密码重置、异常通知等。通过配置邮件发送参数、创建邮件发送服务和使用邮件发送服务,你可以轻松构建一个可靠的邮件通知体系,为你的应用增加及时的通知和反馈机制。希望这篇博文能够帮助你成功实现Spring Boot中的邮件发送功能。

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

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

相关文章

如何使用xlwings库为Excel表格的单元格创建超链接----关于Python里xlwings库对Excel表格的操作(三十九)

这篇小笔记主要记录【如何使用xlwings库为Excel表格的单元格创建超链接】。前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b; &#xff08;2&…

内网环境横向移动——利用windows服务

利用windows服务进行横向渗透主要是通过sc命令&#xff0c;但是注意这里跟之前windows远程命令相比多了一个条件&#xff0c;即当前主机需要为administrator权限。 sc命令 sc命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控…

Excel·VBA合并工作簿2

其他合并工作簿的方法&#xff0c;见之前的文章《ExcelVBA合并工作簿》 目录 8&#xff0c;合并文件夹下所有工作簿中所有工作表&#xff0c;按表头汇总举例 8&#xff0c;合并文件夹下所有工作簿中所有工作表&#xff0c;按表头汇总 与之前的文章《ExcelVBA合并工作簿&#x…

matlab appdesigner系列-常用13-标签

标签&#xff0c;用来显示各类文本 此示例&#xff0c;就是在标签之外的画布上单击鼠标左键&#xff0c;显示王勃的《滕王阁诗》 操作如下&#xff1a; 1&#xff09;将2个标签拖拽到画布上&#xff0c;并修改相应文字。将第二个标签的右侧文本信息中的Wordwrap打开&#xf…

VisualSVN Server实战

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;下载VisualSVN Server&#xff08;二&#xff09;安装VisualSVN Server&#xff08;三&#xff09;使用VisualSVN Server1、新建仓库&#xff08;1&#xff09;新建Repository&#xff08;2&#xff09;选择仓库类…

开源项目_一键发布 markdown 到各个平台_Wechatsync

1 使用场景 最近文章更新比较频繁&#xff0c;基本是日更。因此花费了相当多的时间在不同平台之间同步。时间主要消耗在&#xff1a;需要大致浏览一遍文章内容&#xff0c;另外某些平台需要手动上传图片&#xff0c;有时还需要调整排版。 为了解决这个问题&#xff0c;我选择…

Vagrant创建Oracle RAC环境示例

利用Vagrant安装Oracle RAC&#xff08;默认为non-CDB模式&#xff09;&#xff0c;生成2台虚机&#xff0c;耗时约1小时。 node1: -----------------------------------------------------------------node1: INFO: 2024-01-11 18:25:54: Make create database commandnode1: …

Kafka常见指令及监控程序介绍

kafka在流数据、IO削峰上非常有用&#xff0c;以下对于这款程序&#xff0c;做一些常见指令介绍。 下文使用–bootstrap-server 10.0.0.102:9092,10.0.0.103:9092,10.0.0.104:9092 需自行填写各自对应的集群IP和kafka的端口。 该写法 等同 –bootstrap-server localhost:9092 …

树莓派4B 刷ubuntu20.4.5配置 网线连接 找不到IP解决

跟随的教程&#xff1a; 【树莓派教程第一课 树莓派简介 十分钟玩转系列入门篇】 https://www.bilibili.com/video/BV16U4y1879Q/?p6&share_sourcecopy_web&vd_sourceb96879a51029063390138a2b464a7446 遇到的问题&#xff1a; 在我刷好ubuntu到系统卡并在根目录创建…

二叉树基础oj题目

二叉树基础oj题目及思路总结 前文中&#xff0c;介绍了二叉树的基本概念及基础操作&#xff0c;进一步对于二叉树的递归遍历及子问题的处理思想有了一定的了解。本文将带来几道二叉树经典的oj题目。 目录 二叉树基础oj题目 对称二叉树平衡二叉树二叉树的层序遍历 二叉树基…

【书生·浦语】大模型实战营——第六课笔记

视频链接&#xff1a;https://www.bilibili.com/video/BV1Gg4y1U7uc/?vd_source5d94ee72ede352cb2dfc19e4694f7622 教程文档&#xff1a;https://github.com/InternLM/tutorial/blob/main/opencompass/opencompass_tutorial.md 仓库&#xff1a;https://github.com/open-compa…

带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍

Hqst华轩盛(石门盈盛)电子导读&#xff1a;一起来了解带POE网络变压器与2.5G/5G/10G网络变压器产品特点&#xff1f; 一﹑带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍 首先、POE网络变压器产品与常规不带POE产品的区别&#xff1a; 带POE网络变压器主要要求是耐电流等…