Spring Boot接入邮箱,完成邮箱验证码
邮箱的一些基本概念发送邮件STMP协议Simple Mail Transfer Protocol 简单邮箱传输协议用于发送邮件的协议。基于TCP保证可靠性但不安全是明文传输Spring Boot默认也是基于此协议进行发送邮件接收邮件POP3协议Post Office Protocol 3邮局通信协议第三版用于接收邮箱的标准协议。“一次性取信”客户端把邮件下载到本地之后通常会从服务器上删除可以配置保留副本。如果没有设置电脑上收了邮件手机上就没法再看到这封邮件IMAP协议Internet Message Access Protocol 互联网消息访问协议是POP3的代替也是用于接收邮件的协议“云端管理”客户端拉去邮件只是将“视图”同步到本地不会删除始终保存在服务器上。Gmail、QQ邮箱、OutLook等现代邮箱都是用的IMAP协议邮箱的传送流程当你用QQ邮箱向网易邮箱发送了一封邮件会发生什么QQ邮箱客户端会使用SMTP协议将 邮件发送到自家的邮件服务器上QQ邮箱服务器接收到一封邮件然后会解析目标地址的域名QQ邮箱服务器识别到是其他服务器上的域名就会进行转发同样使用SMTP协议发送网易邮箱服务器接收到一封邮件发现是目标地址是自己的域名就将信封存储在服务器上网易邮箱客户器上线查看服务器上有没有邮件如果有就拉取。使用IMAP或者POP3协议邮箱开通第三方服务如果你使用的是飞书邮箱找到邮箱的位置“第三方邮箱客户端登陆”随便选择一个设备生成获取到授权码、用户名、发信服务器如果你使用的是QQ邮箱找到账户中心开启POP3、IMAP等服务选择你的验证方式即可生成授权码其他的网易邮箱等获取授权码的方式类似邮箱集成使用说明以下的使用参考Spring中文网依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-mail/artifactId /dependency配置文件spring: mail: # 指定邮箱的服务器地址 host: smtp.feishu.cn # 执行邮箱的发送者由哪一个邮箱账号来发送邮件 username: huag****ifree8.com # 邮件的授权码邮箱账号需要开通第三方服务 password: 29F7s******** default-encoding: UTF-8测试Test public void test() throws Exception { // 直接创建 JavaMailSenderImpl 实现类 JavaMailSenderImpl javaMailSender new JavaMailSenderImpl(); javaMailSender.setDefaultEncoding(utf-8); javaMailSender.setHost(smtp.qq.com); javaMailSender.setPort(465); javaMailSender.setUsername(747692844qq.com); javaMailSender.setPassword(你的密码/授权码); javaMailSender.setProtocol(smtps); // 创建一个邮件消息 MimeMessage message javaMailSender.createMimeMessage(); // 创建 MimeMessageHelper MimeMessageHelper helper new MimeMessageHelper(message, false); // 发件人邮箱和名称 helper.setFrom(747692844qq.com, springdoc); // 收件人邮箱 helper.setTo(adminspringboot.io); // 邮件标题 helper.setSubject(Hello); // 邮件正文第二个参数表示是否是HTML正文 helper.setText(Hello strong World/strong, true); // 发送 javaMailSender.send(message); }类之间的关系在测试类中可以看到主要涉及的主要类就是JavaMailSenderMimeMessageMimeMessageHelperJavaMailSender类的继承关系底层实现自MaiSender接口接口中抽象定义了send()而JavaMailSenderImpl就是实现类JavaMailSender的作用就是主要用来发送邮件的抽象理解真实发送快递的“快递员”MimeMessage有了“快递员”我们还需要“快递”——Message