当前位置:   article > 正文

springBoot整合邮箱验证服务实现邮箱验证码登录_springboot项目登录页面增加邮箱验证码校验

springboot项目登录页面增加邮箱验证码校验

概要

   以qq邮箱为例开通POP3/SMTP服务,实现登录验证功能。

步骤

         1、打开qq邮箱,点击设置

         2、点击账号

        3、开启服务,我这里已经开启。如果从来没有开启过则需要发送短信验证来获取授权码。按照提示操作即可。一个账户可以有多个授权码,无需记住授权码。

         4、配置pom.xml

  1. <!-- 邮件服务 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-mail</artifactId>
  5. </dependency>

        5、配置yaml文件

  1. mail:
  2. #smtp服务主机 qq邮箱则为smtp.qq.com
  3. host: smtp.qq.com
  4. #服务协议
  5. protocol: smtp
  6. # 编码集
  7. default-encoding: UTF-8
  8. #发送邮件的账户
  9. username: ************@qq.com
  10. #授权码
  11. password: 你的授权码

        6、编写对应的接口,接口代码后续给出

        7、运行代码常见的一个错误:

  1. Exception in thread "BEORDIE1" org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 501 Mail from address must be same as authorization user.
  2. ;
  3. nested exception is:
  4. com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
  5. ; message exception details (1) are:
  6. Failed message 1:
  7. com.sun.mail.smtp.SMTPSendFailedException: 501 Mail from address must be same as authorization user.
  8. ;
  9. nested exception is:
  10. com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
  11. at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2358)
  12. at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1823)
  13. at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1300)
  14. at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:464)
  15. at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:360)
  16. at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355)
  17. at com.data.service.impl.HtmlEmailService.sendEmail(HtmlEmailService.java:44)
  18. at com.data.service.impl.HtmlEmailService.sendEmail(HtmlEmailService.java:50)
  19. at com.data.service.impl.HtmlEmailService.sendMessage(HtmlEmailService.java:59)
  20. at com.data.service.impl.HtmlEmailService$1.run(HtmlEmailService.java:71)
  21. at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
  22. at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
  23. at java.base/java.lang.Thread.run(Thread.java:834)
  24. Caused by: com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
  25. at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1832)
  26. ... 11 more

        分析:SMTP服务器返回了一个错误,错误消息为 "501 Mail from address must be same as authorization user."。这个错误通常与SMTP服务器的配置和身份验证设置有关。

        解决此问题的方法:

  1. 检查 From 地址: 确保你在电子邮件消息中指定的 "From" 地址与SMTP服务器的身份验证用户关联的电子邮件地址匹配。如果它们不匹配,请更新 "From" 地址以匹配身份验证用户的地址。

  2. 身份验证: 验证你是否提供了SMTP服务器的正确身份验证凭据(用户名和密码)。

  3. SMTP服务器配置: 仔细检查SMTP服务器设置的配置。确保服务器正确配置以允许 "From" 地址和身份验证用户匹配。

  4. Spring配置: 如果你使用的是Spring,请确保已正确设置JavaMailSender bean,并且正确设置了身份验证凭据和属性。

以下是在Spring应用程序的配置类中配置JavaMailSender bean的基本示例:

  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import org.springframework.mail.javamail.JavaMailSender;
  4. import org.springframework.mail.javamail.JavaMailSenderImpl;
  5. @Configuration
  6. public class EmailConfig {
  7. @Bean
  8. public JavaMailSender javaMailSender() {
  9. JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  10. mailSender.setHost("你的SMTP主机");
  11. mailSender.setPort(587); // 或适当的端口
  12. mailSender.setUsername("你的用户名");
  13. mailSender.setPassword("你的密码");
  14. // 如果需要,进行其他属性配置
  15. return mailSender;
  16. }
  17. }

小结

   以qq邮箱为例开通POP3/SMTP服务,实现登录验证功能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/686306
推荐阅读
相关标签
  

闽ICP备14008679号