我们在做网站开发的时候肯定绕不开的两个功能:注册、登录。
如果我们的网站只是一个后台管理系统在内部使用话,注册和登录可以只包括用户名、密码和图形验证码。
但是如果我们开发一个门户网站的话,短信/邮箱验证码就必不可少了,通过这种方法我们可以验证注册人的真实性以防有人故意破坏网站。
今天来介绍一下怎么在系统中集成邮箱发送验证码的功能。
开发环境/工具:SpringBoot+jdk8+QQ邮箱
QQ邮箱准备
要想实现调用QQ邮箱的发送功能需要先开通POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,这里简单介绍一下这几个协议。
- POP3(Post Office Protocol 3):一种用于接收电子邮件的协议。
- IMAP(Internet Message Access Protocol):一种用于接收电子邮件的协议。不同于POP3,IMAP在客户端设备和电子邮件服务器之间保持电子邮件的同步,邮件仍然存储在服务器上。
- SMTP(Simple Mail Transfer Protocol):一种用于发送电子邮件的协议。
- Exchange:微软的企业邮件和协作平台,提供电子邮件、日历、联系人、任务等功能。
- CardDAV:一种用于联系人数据的开放标准协议。
- CalDAV:一种用于日历数据的开放标准协议。
因为是实现发送功能,所以我们使用的是SMTP协议。
首先登录QQ邮箱网页版,依次点击设置->账户->开启服务,如下图所示。
接着需要验证手机,之后我们便得到了一串授权码,代表着服务已经开通了!这里的授权码相当于邮箱的登录密码,只不过它只能用于发送邮件而不能通过授权码登录QQ邮箱,这样就保证了我们邮箱的安全性。
集成邮箱功能
新建项目
新建一个SpringBoot项目并且引入关于邮箱的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置文件
配置文件如下。其中,
- 个人邮件服务器:smtp.qq.com;发送端口: 465或587
- 企业邮箱服务器:smtp.exmail.qq.com;发送端口: 465或587
- 客户端密码:第一步获得的授权码
service层
service中写发送邮件的核心逻辑,包括设置发送人(注意:这里的发送人和配置文件中的用户应当保持一致)、接收人、设置邮件主题和内容等。具体代码如下。
controller层
通过接收一个邮箱地址,调用service服务发送邮件。具体代码如下。
测试接口
通过postman对接口进行测试,这里用我另一个QQ邮箱当做接收邮箱传入body中。点击发送。这时候打开邮箱我们会发现已经收到验证码!
总结
文章通过调用QQ邮箱的SMTP服务来实现验证码发送功能(需要提前开通该服务),省略了对验证码的验证过程(通过中间件例如Redis存储验证码完成验证)。
更多文章干货,推荐公众号【程序员老J】