在Web工程中用JavaMail 发送邮件时报com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required原因

在Web工程中使用javaMail发送邮件时遇到错误:Caused by: com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required。文章详细解释了此错误的根本原因,并提供了正确的解决方案,包括将特定jar包放置于Tomcat服务器的lib目录下,以及检查邮件服务器设置、用户名、密码和端口等关键信息。

在Web工程中使用javaMail发送邮件时发现报以下错误:

Caused by: com.sun.mail.smtp.SMTPSendFailedException: 553 authentication is required,163 smtp10,DsCowACnUtmcewNXorgxCQ--.126S2 1459846045

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
    ... 6 more

经过自己的调试,发现这是因为在Web工程中,需要把activation-1.1.jar包和mail-1.4.7.jar包放在tomcat服务器的lib目录下,Web工程中的lib下不用放这两个jar包。

当然导致发送不了邮件还有以下原因:

1: 你所设置的邮件服务器是否开通(比较关键的问题);
2: 查看你的用户名,密码,端口是否正确;


`org.springframework.mail.MailSendException: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 501 5.1.7 Invalid address` 错误表明邮件发送过程中使用的地址无效。以下是一些可能的解决方法: #### 检查发件人地址 确保发件人地址与 SMTP 服务器的授权用户地址一致。例如在 Spring Boot 中使用 `spring.mail.username` 配置的地址应该和邮件发送时设置的发件人地址相同。 ```java import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Service; @Service public class EmailService { private final JavaMailSender javaMailSender; public EmailService(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public void sendSimpleEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); // 这里的发件人地址要和配置文件中的一致 message.setFrom("your_authorized_email@example.com"); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` #### 检查收件人地址 确保收件人地址格式正确,没有拼写错误。可以添加一些验证逻辑来检查收件人地址,例如使用正则表达式: ```java import java.util.regex.Pattern; public class EmailValidator { private static final String EMAIL_REGEX = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$"; private static final Pattern EMAIL_PATTERN = Pattern.compile(EMAIL_REGEX); public static boolean isValidEmail(String email) { return EMAIL_PATTERN.matcher(email).matches(); } } ``` #### 检查地址格式 邮件地址应该遵循标准的 RFC 格式。避免在地址中使用特殊字符或非法字符。 #### 检查配置文件 确保 `application.properties` 或 `application.yml` 中的邮件配置正确,例如: ```properties spring.mail.host=smtp.example.com spring.mail.port=587 spring.mail.username=your_authorized_email@example.com spring.mail.password=your_email_password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值