[英]Spring and JavaMail connection timeout
我正在嘗試通過 gmail 主機進行電子郵件確認。 我繼續收到“連接超時 500 錯誤”我嘗試更改應用程序屬性和配置類中的參數。 將端口更改為 465 而不是 587,但沒有任何幫助。
如果您發現此頁面不可讀,這可能是...完整項目的鏈接帶有完整的堆棧跟蹤 ---> https://github.com/OlegSokolyk/sweater
這是我的應用程序道具:
spring.mail.host=smtp.gmail.com
spring.mail.username=mailsendtestsweater@gmail.com
spring.mail.password=vhmixskurxwrymtu
spring.mail.port=587
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
mail.debug=true
郵件配置類:
@Configuration
public class MailConfig {
@Value("${spring.mail.host}")
private String host;
@Value("${spring.mail.username}")
private String username;
@Value("${spring.mail.password}")
private String password;
@Value("${spring.mail.port}")
private int port;
@Value("${mail.debug}")
private String debug;
@Bean
public JavaMailSender getMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host);
mailSender.setPort(port);
mailSender.setUsername(username);
mailSender.setPassword(password);
Properties properties = mailSender.getJavaMailProperties();
properties.put("mail.transport.protocol", "smtp");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.debug", debug);
return mailSender;
}
}
郵件發送服務:
@Service
public class MailSender {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String username;
public void send(String emailTo, String subject, String message) {
try {
SimpleMailMessage mailMessage = new SimpleMailMessage();
mailMessage.setFrom(username);
mailMessage.setTo(emailTo);
mailMessage.setSubject(subject);
mailMessage.setText(message);
mailSender.send(mailMessage);
} catch (MailException e) {
e.printStackTrace();
}
}
}
報名方式:
public boolean addUser(User user) {
User userFromDB = userRepository.findByUsername(user.getUsername());
if(userFromDB != null) {
return false;
}
user.setActive(true);
user.setRoles(Collections.singleton(Role.USER));
user.setActivationCode(UUID.randomUUID().toString());
userRepository.save(user);
if (!StringUtils.isEmpty(user.getEmail())) {
String message = String.format(
"Hello, %s! \n " +
"Welcome to Sweater. Please, visit next link: http://localhost:8080/activate/%s",
user.getUsername(),
user.getActivationCode()
);
mailSender.send(user.getEmail(), "Activation code", message);
}
return true;
}
注冊控制器:
@PostMapping("/registration")
public String addUser(User user, Model model) {
if (!userService.addUser(user)) {
model.addAttribute("message", "User exists");
return "registration";
}
return "redirect:/login";
}
堆棧跟蹤:
org.springframework.mail.MailSendException: 郵件服務器連接失敗; 嵌套異常是 com.sun.mail.util.MailConnectException:無法連接到主機,端口:smtp.gmail.com,587; 超時 -1;
嵌套異常是:java.net.ConnectException:連接超時:連接。 失敗的消息:com.sun.mail.util.MailConnectException:無法連接到主機,端口:smtp.gmail.com,587; 超時 -1;
嵌套異常是:
spring.mail.properties.mail.smtp.connectiontimeout=5000 spring.mail.properties.mail.smtp.writetimeout=5000
嘗試添加以上兩個屬性
原因是我的互聯網提供商。 我在另一個代碼中嘗試了相同的代碼,並且成功了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.