在Spring Boot中使用JavaMailSender发送邮件

2023-12-01 01:20

本文主要是介绍在Spring Boot中使用JavaMailSender发送邮件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用了这么久的Spring Boot,我们对Spring Boot的了解应该也逐步进入正轨了,这篇文章讲的案例也在我们的实际开发中算是比较实用的了,毕竟我们完成注册功能和对用户群发消息,都可以采用到邮箱发送功能,往下看,我们来看看什么是JavaMailSender。

什么是JavaMailSender

JavaMailSenderSpring Framework中的一个接口,用于发送电子邮件。它是Spring对JavaMail API的封装,提供了更简单和更方便的方式来发送邮件。

JavaMailSender接口定义了一组发送邮件的方法,包括发送简单文本邮件、发送带附件的邮件、发送HTML格式的邮件等。它隐藏了底层JavaMail API的复杂性,使得在Spring应用中发送邮件变得更加容易。

Spring Boot中,你可以通过依赖注入JavaMailSender来使用它。通过配置邮件服务器的相关信息,你可以使用JavaMailSender发送邮件。

JavaMailSender接口的常用实现类是JavaMailSenderImpl,它是基于JavaMail API实现的。除了JavaMailSenderImplSpring还提供了其他的实现类,例如MockMailSender用于测试目的。

使用JavaMailSender,你可以方便地发送邮件,设置收件人、发件人、主题、正文等信息,并可以附加文件、设置抄送、密送等功能。

JavaMailSender是Spring Framework中用于发送邮件的接口,它简化了邮件发送的过程,提供了更高级的抽象和便利性。

来看一个案例:
引入依赖:

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

如其他自动化配置一样,我们在引入相关依赖后就需要在application.properties文件中进行配置:

spring.mail.host=your-smtp-host
spring.mail.port=your-smtp-port
spring.mail.username=your-username
spring.mail.password=your-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true

请将your-smtp-host、your-smtp-port、your-username和your-password替换为你的实际信息。

然后,在你的代码中,注入JavaMailSender并使用它来发送邮件。以下是一个简单的示例:

例如我们采用qq邮箱:

spring.mail.host=smtp.qq.com
spring.mail.username=用户名
spring.mail.password=密码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

这里的密码指你获取的邮箱的授权码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里获取你的相关信息,

@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

在这里插入图片描述
template.vm

<html>
<body><h3>你好, ${username}, 这是一封模版引擎封装的邮箱信!</h3>
</body>
</html>

之后咱们创建一个测试类进行:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ApplicationTests {@Autowiredprivate JavaMailSender mailSender;@Autowiredprivate VelocityEngine velocityEngine;//简单的邮件发送@Testpublic void sendSimpleMail() throws Exception {SimpleMailMessage message = new SimpleMailMessage();message.setFrom("28****70@qq.com");message.setTo("28****70@qq.com");message.setSubject("主题:简单邮件");message.setText("简单的邮件内容");mailSender.send(message);}//携带附件的邮件@Testpublic void sendAttachmentsMail() throws Exception {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("28****70@qq.com");helper.setTo("28****70@qq.com");helper.setSubject("主题:有附件");helper.setText("内容:有附件的邮件");FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));helper.addAttachment("miaow-1.jpg", file);helper.addAttachment("miaow-2.jpg", file);helper.addAttachment("miaow-2.jpg", file);mailSender.send(mimeMessage);}//发送嵌入静态资源@Testpublic void sendInlineMail() throws Exception {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("28****70@qq.com");helper.setTo("28****70@qq.com");helper.setSubject("主题:嵌入静态资源");helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));helper.addInline("weixin", file);mailSender.send(mimeMessage);}//发送模版附件@Testpublic void sendTemplateMail() throws Exception {MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom("28****70@qq.com");helper.setTo("28****70@qq.com");helper.setSubject("主题:模板邮件");Map<String, Object> model = new HashedMap();model.put("username", "miaow");String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "template.vm", "UTF-8", model);helper.setText(text, true);mailSender.send(mimeMessage);}
}

在项目下放置:weixin.jpg图片,图片随便你怎么玩

在这里插入图片描述

这样,你就可以在Spring Boot中使用JavaMailSender发送邮件了。记得替换示例代码中的实际信息,以便与你的邮件服务器配置相匹配。


在使用JavaMailSender发送邮件时,有一些注意事项需要注意:

邮件服务器的配置

在使用JavaMailSender发送邮件之前,你需要配置邮件服务器的相关信息,包括SMTP服务器地址、端口号、用户名、密码等。这些信息可以通过在配置文件中添加相关属性来实现。

邮件内容的设置

在设置邮件内容时,你需要注意邮件的主题、正文、收件人、发件人等信息的设置。如果你需要发送HTML格式的邮件,需要将邮件内容设置为HTML格式,并设置相应的邮件头信息。

邮件发送的异常处理

在发送邮件时,可能会出现各种异常,例如连接超时、认证失败等。你需要对这些异常进行处理,以便及时发现和解决问题。

邮件发送的性能问题

在发送大量邮件时,可能会出现性能问题。你需要注意邮件发送的频率和数量,以避免对邮件服务器造成过大的负载。

邮件发送的安全问题

在发送邮件时,需要注意邮件的安全性。你需要确保邮件内容不包含敏感信息,并且邮件服务器的认证和加密设置是正确的。

总之,在使用JavaMailSender发送邮件时,你需要注意邮件服务器的配置、邮件内容的设置、异常处理、性能问题和安全问题等方面,以确保邮件发送的顺利和安全。

这篇关于在Spring Boot中使用JavaMailSender发送邮件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439290

相关文章

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4