使用Mailtrap.io实现邮件发送时遇收件人地址缺失错误排查
解决Spring Boot邮件发送报错"No recipient addresses"的问题
你遇到的这个错误javax.mail.SendFailedException: No recipient addresses原因非常明确——你在构建邮件的时候没有指定收件人地址!
看你的sendVerificationEmail方法,你只设置了回复地址(setReplyTo)、发件人、邮件主题、发送时间和邮件内容,但完全漏掉了设置收件人的步骤。要注意:setReplyTo是用来指定收件人回复邮件时默认发送的地址,它和实际的邮件接收人(也就是你要发送验证邮件的用户邮箱)完全是两回事。
修复方法
只需要在MimeMessageHelper的配置里加上message.setTo(emailAddress);,把传入的用户邮箱设置为收件人即可:
修改后的sendVerificationEmail方法代码:
public void sendVerificationEmail(String emailAddress) { MimeMessagePreparator preparator = new MimeMessagePreparator() { @Override public void prepare(MimeMessage mimeMessage) throws Exception { MimeMessageHelper message = new MimeMessageHelper(mimeMessage); message.setReplyTo(emailAddress); message.setFrom(new InternetAddress("socialnetworkmailsender@yandex.com")); // 新增这一行:设置收件人地址 message.setTo(emailAddress); message.setSubject("Please Verify Your Email Address"); message.setSentDate(new Date()); message.setText("Hello there!"); } }; sendEmail(preparator); }
另外补充一点:Spring的MimeMessageHelper还有重载的setTo方法可以传入多个收件人地址,不过这里你只需要单个收件人,用String参数的版本就足够了。
这个错误和你使用的SMTP服务(Mailtrap.io或者mailspons)无关,不管用哪个服务商,邮件都必须指定收件人才能发送成功。
内容的提问来源于stack exchange,提问作者JustQuest
相关产品推荐
相关产品推荐

