Это сводило меня с ума, и я просто хотел добавить, что сработало для меня. Мне пришлось обновить мою версию JavaMail (1.4.5), чтобы это работало - не уверен, какая версия использовалась раньше.
После обновления до новой версии JavaMail у меня сработал следующий код (можно раскомментировать строки отладки для получения дополнительной информации об отладке - порт был 587
, а хост smtp.gmail.com
):
public void sendMailWithAuth(String host, String user, String password,
String port, List<String> toList, String htmlBody,
String subject) throws Exception {
Properties props = System.getProperties();
props.put("mail.smtp.user",user);
props.put("mail.smtp.password", password);
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", port);
//props.put("mail.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.EnableSSL.enable","true");
Session session = Session.getInstance(props, null);
//session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(user));
// To get the array of addresses
for (String to: toList) {
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
}
message.setSubject(subject);
message.setContent(htmlBody, "text/html");
Transport transport = session.getTransport("smtp");
try {
transport.connect(host, user, password);
transport.sendMessage(message, message.getAllRecipients());
} finally {
transport.close();
}
}