如何解决JavaMailSender 对象未在 Spring Boot 中发送电子邮件
我想实现忘记密码功能。我的应用程序应该向员工发送电子邮件。我的 JavaMailSender 对象的方法 send() 不起作用,我没有收到任何异常消息。我尝试了很多东西。例如:
Having troubles sending emails from spring boot application
No exception found but mail not send in Spring MVC
Java spring boot - JavaMailSender errors
我的 ForgotPasswordController.java 类(有问题的部分):
@PostMapping("/forgot_password")
public String processForgotPassword(HttpServletRequest request,Model model)
{
String email = request.getParameter("email");
String token = RandomString.make(30);
try
{
employeeDAO.updateResetPasswordToken(token,email);
String resetPasswordLink = Utility.getSiteURL(request) + "/reset_password?token=" + token;
sendEmail(email,resetPasswordLink);
model.addAttribute("message","We have sent a reset password link to your email. Please check.");
}
catch (Exception e)
{
model.addAttribute("error","Error while sending email");
}
return "forgot_password_form";
}
public void sendEmail(String recipientEmail,String link) throws Exception
{
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(new InternetAddress("svemir2212@gmail.com"));
helper.setTo(recipientEmail);
String subject = "Here's the link to reset your password";
String content = "<p>Hello,</p>"
+ "<p>You have requested to reset your password.</p>"
+ "<p>Click the link below to change your password:</p>"
+ "<p><a href=\"" + link + "\">Change my password</a></p>"
+ "<br>"
+ "<p>Ignore this email if you do remember your password,"
+ "or you have not made the request.</p>";
helper.setSubject(subject);
helper.setText(content,true);
mailSender.send(message);
}
我正在使用 Spring Boot。这是我在 application.properties 文件中的电子邮件配置:
spring.mail.host = smtp.gmail.com
spring.mail.port = 465
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
spring.mail.username = mymail@gmail.com
spring.mail.password = somepassword
spring.mail.properties.mail.smtp.auth = true
spring.mail.properties.mail.smtp.auth.starttls.enable=true
spring.mail.properties.mail.smtp.ssl.enable = true
spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback = false
我也尝试过使用端口 587,但不起作用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。