我正在尝试使用JavaMailSenderImpl来发送邮件.下面是程序和输出,显示没有错误,但仍然不能发送邮件。
邮件配置。
@Configuration
public class MailConfig {
@Autowired
private Environment env;
@Bean
public JavaMailSender javaMailService() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(env.getProperty("spring.mail.host"));
mailSender.setUsername(env.getProperty("spring.mail.username"));
mailSender.setPassword(env.getProperty("spring.mail.password"));
Properties javaMailProperties = new Properties();
javaMailProperties.put("mail.smtp.ssl.enable", "true");
javaMailProperties.put("mail.smtp.starttls.enable", "false");
javaMailProperties.put("mail.smtp.auth", "true");
javaMailProperties.put("mail.transport.protocol", "smtp");
javaMailProperties.put("mail.debug", "true");
javaMailProperties.put("mail.smtp.ssl.checkserveridentity", "true");
javaMailProperties.put("mail.smtp.socketFactory.port", "465");
mailSender.setJavaMailProperties(javaMailProperties);
return mailSender;
}
}
@GetMapping("/user/resetPassword/{email}")
public GenericResponse resetPassword(HttpServletRequest request,
@PathVariable("email") String userEmail) throws UserNotFoundException {
User user = userRepository.findByEmail(userEmail);
if (user == null) {
throw new UserNotFoundException("USER NOT FOUND");
}
try {
String token = UUID.randomUUID().toString();
createPasswordResetTokenForUser(user, token);
mailSender.send(constructResetTokenEmail("http://localhost:7005", token, user));
}
catch(Exception ex) {
ex.printStackTrace();
}
return new GenericResponse("message.resetPasswordEmail");
}
public void createPasswordResetTokenForUser(User user, String token) {
PasswordResetToken myToken = new PasswordResetToken(token, user);
passwordTokenRepository.save(myToken);
}
private SimpleMailMessage constructResetTokenEmail(
String contextPath, String token, User user) {
String url = contextPath + "/user/changePassword?token=" + token;
String message = "message.resetPassword";
return constructEmail("Reset Password", message + " \r\n" + url, user);
}
private SimpleMailMessage constructEmail(String subject, String body,
User user) {
SimpleMailMessage email = new SimpleMailMessage();
email.setSubject(subject);
email.setText(body);
email.setTo("[email protected]");
email.setFrom("[email protected]");
return email;
}
}
下面是代码的输出。
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "CHUNKING", arg ""
DEBUG SMTP: Found extension "SMTPUTF8", arg ""
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM XOAUTH2
DEBUG SMTP: Using mechanism LOGIN
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<[email protected]>
250 2.1.0 OK u5sm8797330pfu.198 - gsmtp
RCPT TO:<[email protected]>
250 2.1.5 OK u5sm8797330pfu.198 - gsmtp
DEBUG SMTP: Verified Addresses
DEBUG SMTP: [email protected]
DATA
354 Go ahead u5sm8797330pfu.198 - gsmtp
QUIT
更新依赖关系后得到了合适的输出。