Отправка электронной почты на Java с использованием электронных библиотек Apache Commons
-
21-08-2019 - |
Вопрос
Я использую библиотеку электронной почты Apache Commons для отправки электронных писем, но я не могу отправлять их через SMTP-сервер GMail.
Кто-нибудь может предоставить пример кода, который работает с SMTP-сервером GMail и другими?
Я использую следующий код, который не работает:
String[] recipients = {"receiver@gmail.com"};
SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setAuthentication("sender@gmail.com", "mypasswd");
email.setDebug(true);
email.setSmtpPort(465);
for (int i = 0; i < recipients.length; i++)
{
email.addTo(recipients[i]);
}
email.setFrom("sender@gmail.com", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();
Решение
Для отправки электронных писем на SMTP-сервер GMail требуется аутентификация и SSL.Имя пользователя и пароль довольно просты.Убедитесь, что у вас установлены следующие свойства для включения аутентификации и SSL, и это должно сработать.
mail.smtp.auth=true
mail.smtp.starttls.enable=true
К образцу кода добавьте следующее, чтобы включить TLS.
Для API-версий < 1.3 использование:
email.setTSL(true);
метод устарел для версий >= 1.3, и вместо него вам следует использовать: email.setStartTLSEnabled(true);
Другие советы
Пожалуйста, найдите ниже код, который работает.Очевидно, что вы должны добавить apache jar в путь сборки вашего проекта.
public static void sendSimpleMail() throws Exception {
Email email = new SimpleEmail();
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator("your gmail username",
"your gmail password"));
email.setDebug(false);
email.setHostName("smtp.gmail.com");
email.setFrom("me@gmail.com");
email.setSubject("Hi");
email.setMsg("This is a test mail ... :-)");
email.addTo("you@gmail.com");
email.setTLS(true);
email.send();
System.out.println("Mail sent!");
}
С уважением, Серджиу
использование commons.email сработало для меня.
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);