У меня проблема с отправкой почты в приложении Java.Если я пытаюсь отправить письмо от Main, оно работает отлично, но когда я пытаюсь отправить письмо из запроса, оно застревает.Я уже пробовал с SSL TLS.Код для моей почтовой службы, где я также устанавливаю SMTP-данные и задаю, кому, от кого и что отправлять.
@Service
public class MailService {
public static void sendMailSSL(){
final String username = "x@gmail.com";
final String password = "password";
System.out.println("Sending mail...");
Properties props = new Properties();
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory.fallback", "false");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("plesha.gabi@gmail.com"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler," +
"\n\n No spam to my email, please!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
And the class where i call this method:
@CrossOrigin(maxAge = 3600)
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private MailService mailService;
@RequestMapping(value = "/sendmail", method = RequestMethod.PUT)
public String sendMail() throws MessagingException {
MailService.sendMailSSL();
return "Successfully send an e-mail";
}
}