【快学springboot】使用springboot发送邮件
前言
在实际项目中,经常需要用到邮件通知功能。比如,用户通过邮件注册,通过邮件找回密码等;又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多。这篇文章,就教大家通过springboot快速的实现一个发送邮件的功能。
开启smtp
这里以QQ邮箱为例。登录QQ邮箱之后,点击设置,点击账户。如下图:
点击开启IMAP/SMTP服务。
记下QQ邮箱提示的授权码:
这个授权码,就是发送邮件时需要的密码。
以上步骤完成之后,就可以开始开发了。
引入依赖
在springboot项目中,引入如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
在springboot项目中引入依赖之后,即可在其配置文件中配置邮箱的参数:
application.properties
spring.mail.host=smtp.qq.com
spring.mail.username=happyjava@foxmail.com
spring.mail.password=xxxxxxxx
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
因为是QQ邮箱,所以host需要使用smtp.qq.com。如果是其它邮箱,搜索下即可找到。
username为邮箱账号,password为上面步骤中提到的授权码。
注入JavaMailSender实例
邮箱参数配置完之后,即可直接注入JavaMailSender实例。
@Autowired
private JavaMailSender javaMailSender;
发送普通邮件
普通邮件,没有样式。实现起来最容易:
@Test
public void testSend() throws MessagingException {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom("happyjava@foxmail.com");
message.setTo("1015030682@qq.com");
message.setSubject("这是标题");
message.setText("这是内容");
javaMailSender.send(message);
}
From需要和配置文件中的username一致,否则会报错。
To为邮件接收者;
Subject为邮件的标题;
Text为邮件的内容。
运行方法,即可收到邮件:
发送HTML邮件
很多时候,我们需要邮件带有美观的样式。这时候,可以使用HTML的样式。我们需要使用javaMailSender的createMimeMessage方法,构建一个MimeMessage,然后使用MimeMessage实例创建出MimeMessageHelper。如下:
@Test
public void testSend() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);
messageHelper.setSubject("标题");
messageHelper.setFrom("happyjava@foxmail.com");
messageHelper.setTo("1015030682@qq.com");
messageHelper.setText("<h1>标题</h1><br/><p>这是内容</p>", true);
javaMailSender.send(messageHelper.getMimeMessage());
}
这里需要注意的是,setText的时候需要传一个布尔值进去,表名需要使用HTML样式。
运行方法查看结果:
可以看到,h1的样式已经出来了。
总结
本文讲解了如何在springboot中快速的发邮件。介绍了两种发送邮件的方式:1、普通模式;2、HTML模式。其实还支持多种丰富的模式,比如模板引擎等,这里就不讲解了,其实使用起来大同小异。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】