我尝试在验证用户身份时发送邮件,但收到此错误消息。
@服务 公共类 EmailService {
private final JavaMailSender mailSender;
private final MailConfigurationProperties mailConfigurationProperties;
private final Logger logger = LoggerFactory.getLogger(EmailService.class);
public EmailService( JavaMailSender mailSender, MailConfigurationProperties mailConfigurationProperties) {
this.mailSender = mailSender;
this.mailConfigurationProperties = mailConfigurationProperties;
}
public void sendEmail(String to, String subject, String content) {
logger.info("Sending email from [{}] to [{}] with subject [{}].",
mailConfigurationProperties.getUsername(), to, subject);
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "utf-8");
try {
helper.setText(content, true);
helper.setTo(to);
helper.setSubject(subject);
helper.setFrom(mailConfigurationProperties.getUsername());
mailSender.send(mimeMessage);
logger.info("Successfully sent mail to: " + to);
} catch (MessagingException e) {
logger.error("Failed to send email", e);
}
}
}
这是我尝试发送电子邮件的地方
@PostMapping("/signup")
public String signup(@RequestParam String email,
@RequestParam String fullname,
@RequestParam String username,
@RequestParam String password){
User user = userService.saveUser(email, fullname, username, password);
String random=userService.generateRandomString(16);
userService.setVerificationCode(user, random);
emailService.sendEmail(email, "timestamps app", random);
return "redirect:/verify_email";
}
application.yml 文件
邮件: 主机:smtp.gmail.com 端口:587 用户名:[电子邮件受保护] 密码: ********* smtpAuth: true starttlsEnabled:true
您的
JavaMailSender
未从您的 application.yaml
正确配置。
所以有以下属性
mail:
host: smtp.gmail.com
port: 587
username: [email protected]
password: *********
smtpAuth: true
starttlsEnabled: true
spring注册bean时不考虑
javaMailSender
。
这就是你的堆栈跟踪的证明
org.springframework.mail.MailSendException:邮件服务器连接 失败的。无法连接到主机,端口:localhost,25;超时-1;
所以你的调查应该是为什么你的
application.yaml
不被考虑从春天开始