Я больше не могу отправлять сообщения из учетной записи Gmail, используя Java Mail API. Я подозреваю, что некоторые изменения в безопасности виноваты.
У меня есть этот простой код:
public static void generateAndSendEmail() throws AddressException, MessagingException {
// Step1
System.out.println("\n 1st ===> setup Mail Server Properties..");
mailServerProperties = System.getProperties();
mailServerProperties.put("mail.smtp.port", "587");
mailServerProperties.put("mail.smtp.auth", "true");
mailServerProperties.put("mail.smtp.starttls.enable", "true");
System.out.println("Mail Server Properties have been setup successfully..");
// Step2
System.out.println("\n\n 2nd ===> get Mail Session..");
getMailSession = Session.getDefaultInstance(mailServerProperties, null);
generateMailMessage = new MimeMessage(getMailSession);
generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("me@gmail.com"));
generateMailMessage.setSubject("Greetings from Me..");
String emailBody = "Test email using JavaMail API example.");
generateMailMessage.setContent(emailBody, "text/html");
System.out.println("Mail Session has been created successfully..");
// Step3
System.out.println("\n\n 3rd ===> Get Session and Send mail");
Transport transport = getMailSession.getTransport("smtp");
// Enter your correct gmail UserID and Password
transport.connect("smtp.gmail.com", "my gmail username", "my password");
transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients());
transport.close();
}
Я знаю, что вместо my gmail username
и my password
указаны правильные учетные данные, но все равно получаю исключение:
Exception in thread "main" javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
...
Я даже включил доступ для менее безопасных приложений, но все равно не помог.