SpringBoot如何发送邮件?看这一篇


前言

邮件发送是一个非常常见的需求,用户注册(验证码功能),找回密码等地方都可以用到。Spring Boot 中对于邮件发送,提供了相关的自动化配置类,使得邮件发送变得非常容易。本文快速介绍如何用SpringBoot发送简单邮件。


一、邮件协议

SMTP 协议全称为 Simple Mail Transfer Protocol,译作简单邮件传输协议,它定义了邮件客户端软件与 SMTP 服务器之间,以及 SMTP 服务器与 SMTP 服务器之间的通信规则。

POP3 协议全称为 Post Office Protocol ,译作邮局协议,它定义了邮件客户端与 POP3 服务器之间的通信规则。

假设从 a@qq.com 发送邮件到 b@163.com :
1.a先将邮件投递到腾讯的邮件服务器
2.腾讯的邮件服务器将a的邮件投递到网易的邮件服务器
3.b 登录网易的邮件服务器读取邮件

1和2使用了 SMTP 协议,SMTP 服务器就是用来投递邮件
如果用户要读取邮件,就需要通过邮件服务商的 POP3 邮件服务器来完成,就是3步骤


二、准备工作

发送之前要先申请授权码,这里以 QQ 邮箱为例,向大家演示授权码的申请流程
1.登录 QQ 邮箱网页版,点击设置按钮

在这里插入图片描述
2.账户选项卡中开启POP3/SMTP选项

在这里插入图片描述
按照系统提示操作,开启成功之后,即可获取一个授权码,复制该授权码,下面会使用。

三、项目代码

1.在springboot项目中添加发送邮件的相关依赖

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

2.配置邮箱基本信息

spring:
  mail:
    # 配置 SMTP 服务器地址
    host: smtp.qq.com
    # 发送者邮箱
    username: 1971xxxxxx@qq.com
    # 配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: xxxxxxxxxxx
    # 端口号465或587
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    # 配置SSL 加密工厂
    properties:
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        #表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: true

做完这些之后,Spring Boot 就会自动帮我们配置好邮件发送类(JavaMailSender),我们直接注入使用即可。

3.测试代码(自己发给自己测试)

@SpringBootTest
class DemoApplicationTests {

	
	@Autowired
	JavaMailSender javaMailSender;
	/**
	 * 普通邮件发送
	 */
	@Test
	public void sendSimpleMail() {
		// 构建一个邮件对象
		SimpleMailMessage message = new SimpleMailMessage();
		// 设置邮件主题
		message.setSubject("你好,这是一封测试邮件");
		// 设置邮件发送者,这个跟application.yml中设置的要一致
		message.setFrom("1971xxxxxx@qq.com");
		// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似
		// message.setTo("10*****16@qq.com","12****32*qq.com");
		message.setTo("1971xxxxxx@qq.com");
		//生成四位验证码,模拟验证码功能
		Random random=new Random();
		int verify=random.nextInt(9000)+1000;
		// 设置邮件抄送人,可以有多个抄送人
		//message.setCc("12****32*qq.com");
		// 设置隐秘抄送人,可以有多个
		//message.setBcc("7******9@qq.com");
		// 设置邮件发送日期
		message.setSentDate(new Date());
		// 设置邮件的正文
		message.setText("你的验证码为:"+verify+",注意有效期为5分钟");
		// 发送邮件
		javaMailSender.send(message);
	}

}

4.测试结果

在这里插入图片描述
可以看到邮件已经成功通过JAVA代码发送到了指定邮箱中


总结

本文介绍了简单的邮件发送形式。SpringBoot还可以发送带有附加,带有图片的邮件。如果邮件的内容比较丰富,还可以是通过 HTML 来呈现。使用 Thymeleaf 来构建邮件模板,Thymeleaf 的自动化配置提供了一个 TemplateEngine,通过 TemplateEngine 可以很方便的将 Thymeleaf 模板渲染为 HTML,读者可以自行阅读相关资料学习。


  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JinziH Never Give Up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值