赞
踩
以qq邮箱为例开通
POP3/SMTP服务,实现登录验证功能。
1、打开qq邮箱,点击设置
2、点击账号
3、开启服务,我这里已经开启。如果从来没有开启过则需要发送短信验证来获取授权码。按照提示操作即可。一个账户可以有多个授权码,无需记住授权码。
4、配置pom.xml
- <!-- 邮件服务 -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
5、配置yaml文件
- mail:
- #smtp服务主机 qq邮箱则为smtp.qq.com
- host: smtp.qq.com
- #服务协议
- protocol: smtp
- # 编码集
- default-encoding: UTF-8
- #发送邮件的账户
- username: ************@qq.com
- #授权码
- password: 你的授权码
6、编写对应的接口,接口代码后续给出
7、运行代码常见的一个错误:
- 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.
- ;
- nested exception is:
- com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
- ; message exception details (1) are:
- Failed message 1:
- com.sun.mail.smtp.SMTPSendFailedException: 501 Mail from address must be same as authorization user.
- ;
- nested exception is:
- com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
-
- at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2358)
- at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1823)
- at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1300)
- at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:464)
- at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:360)
- at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:355)
- at com.data.service.impl.HtmlEmailService.sendEmail(HtmlEmailService.java:44)
- at com.data.service.impl.HtmlEmailService.sendEmail(HtmlEmailService.java:50)
- at com.data.service.impl.HtmlEmailService.sendMessage(HtmlEmailService.java:59)
- at com.data.service.impl.HtmlEmailService$1.run(HtmlEmailService.java:71)
- at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
- at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
- at java.base/java.lang.Thread.run(Thread.java:834)
- Caused by: com.sun.mail.smtp.SMTPSenderFailedException: 501 Mail from address must be same as authorization user.
-
- at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1832)
- ... 11 more
分析:SMTP服务器返回了一个错误,错误消息为 "501 Mail from address must be same as authorization user."。这个错误通常与SMTP服务器的配置和身份验证设置有关。
解决此问题的方法:
检查 From 地址: 确保你在电子邮件消息中指定的 "From" 地址与SMTP服务器的身份验证用户关联的电子邮件地址匹配。如果它们不匹配,请更新 "From" 地址以匹配身份验证用户的地址。
身份验证: 验证你是否提供了SMTP服务器的正确身份验证凭据(用户名和密码)。
SMTP服务器配置: 仔细检查SMTP服务器设置的配置。确保服务器正确配置以允许 "From" 地址和身份验证用户匹配。
Spring配置: 如果你使用的是Spring,请确保已正确设置JavaMailSender bean,并且正确设置了身份验证凭据和属性。
以下是在Spring应用程序的配置类中配置JavaMailSender bean的基本示例:
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.mail.javamail.JavaMailSender;
- import org.springframework.mail.javamail.JavaMailSenderImpl;
-
- @Configuration
- public class EmailConfig {
-
- @Bean
- public JavaMailSender javaMailSender() {
- JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
- mailSender.setHost("你的SMTP主机");
- mailSender.setPort(587); // 或适当的端口
- mailSender.setUsername("你的用户名");
- mailSender.setPassword("你的密码");
-
- // 如果需要,进行其他属性配置
-
- return mailSender;
- }
- }
以qq邮箱为例开通
POP3/SMTP服务,实现登录验证功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。