用邮箱注册账号是一个很常见的功能,下面就详细讲讲如何实现。
Step1 前置工作
首先要准备一个邮箱,用作发件人地址,由于是在程序中使用这个邮箱,所以需要做一些设置,才能实现用代码发送邮件的功能。以腾讯企业邮箱为例,首先登录发件人的邮箱,点击「设置」进入如下界面:
往下拖动界面,找到下图红框中的配置,全部勾选上,然后「保存更改」:
在上图中,可以发现在「设置方法」板块下,官方已经对发送服务器作了说明,这些信息很重要,会在代码配置中用到。接下来获取授权码,或者叫「客户端专用密码」,这是邮箱出于安全考虑而生成的一种码,用于替代真正的登录密码在代码中使用,防止密码泄露。腾讯企业邮箱无法直接生成授权码,需要先绑定微信:
绑定微信成功后才会出现「生成新密码」的按钮,点击即可拿到授权码:
以上过程对于其他类型的邮箱也是一样,大同小异,可能设置位置或命名不一样,但是类似的功能都是有的。另外补充一点,就是腾讯企业邮箱的实际登录密码可以在代码中直接用,不需要用授权码,我也是在后续的测试中发现,具体原因还有待研究。
Step2 代码实现
1 引入邮件依赖
1 | <dependency> |
2 添加邮件配置
1 | spring: |
3 编写邮件实体类
1 | import com.fasterxml.jackson.annotation.JsonIgnore; |
4 编写邮件工具类
1 | import org.apache.commons.lang3.StringUtils; |
格式校验工具类:
1 | import java.util.regex.Matcher; |
5 常量定义
1 | // 登录类型 |
6 Controller 接口
着重看三个接口:/send-email、/register-by-mailbox 和 /verify,其他接口是为了注册、登录流程的完整性而贴上来,清楚来龙去脉才更容易理解,部分代码会因为没引入依赖而报错,但是不影响理解逻辑:
1 |
|
(完)