当前位置: 首页 > news >正文

在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发送邮件时,你需要注意邮件服务器的配置、邮件内容的设置、异常处理、性能问题和安全问题等方面,以确保邮件发送的顺利和安全。

http://www.lryc.cn/news/252178.html

相关文章:

  • python动态圣诞下雪图
  • 随心玩玩(十)git
  • 每日一练【盛最多水的容器】
  • Linux C语言 38-进程间通信IPC之信号
  • 前端使用 xlsx.js 工具读取 excel 遇到时间日期少 43 秒的解决办法
  • 问题记录-maven依赖升级或替换(简单版)
  • 00Hadoop数据仓库平台
  • java-jar包
  • Flink运行时架构核心概念
  • docker安装达梦数据库并挂在数据卷
  • ROS第一个程序——helloworld
  • 【Python 训练营】N_17 冒泡排序
  • 虚拟机docker中的Nginx部署
  • 06、pytest将多个测试放在一个类中
  • 实体类转SQL工具类
  • 高端制造业中的通用性超精密3D光学测量仪器
  • 微信公众号非静默授权获取头像和昵称
  • Java项目学生管理系统四编辑学生
  • 不同数据库进行同步和增量数据(SQL server 与MySQL数据库为例)
  • 国内的几款强大的AI智能—AI语言模型
  • linux下恶意软件的七种反分析技术
  • Spring Security OAuth2 认证服务器自定义异常处理
  • selenium环境安装
  • (C++)和为s的两个数字--双指针算法
  • 鸿蒙(HarmonyOS)应用开发——构建页面(题目答案)
  • Python基础快速过一遍
  • 等保测评报价相差很大,里面有什么门道
  • MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】
  • 如何精准操作无人机自动停机坪?
  • 【蓝桥杯】带分数