Отправка электронной почты на Java с помощью почтовых библиотек Apache Commons - PullRequest
11 голосов
/ 11 мая 2009

Я использую почтовую библиотеку 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();

Ответы [ 3 ]

10 голосов
/ 11 мая 2009

Для отправки электронной почты на SMTP-сервер GMail требуется аутентификация и SSL. Имя пользователя и пароль довольно просты. Убедитесь, что для активации аутентификации и SSL установлены следующие свойства, и они должны работать.

mail.smtp.auth=true
mail.smtp.starttls.enable=true

К примеру кода добавьте следующее к включенному TLS.

Для API-версий <1.3 используйте: <br> email.setTSL(true);
метод не рекомендуется для версий> = 1.3, и вместо этого вы должны использовать: email.setStartTLSEnabled(true);

8 голосов
/ 10 октября 2010

Пожалуйста, найдите ниже код, который работает. Очевидно, вы должны добавить 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!");
}

С уважением, Серджиу

2 голосов
/ 22 июля 2010

с помощью commons.email работал для меня.

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
...