El envío de correo electrónico en Java utilizando librerías de correo electrónico Apache Commons

StackOverflow https://stackoverflow.com/questions/848794

Pregunta

Estoy usando Apache Commons biblioteca de correo electrónico para enviar mensajes de correo electrónico, pero no soy capaz de enviarlos a través del servidor SMTP de Gmail.
Puede cualquier persona proporcionar código de ejemplo que funciona con Gmail servidor SMTP y otros?

Estoy utilizando el siguiente código que no funciona:

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();
¿Fue útil?

Solución

Envío de mensajes de correo electrónico al servidor SMTP de Gmail requiere autenticación y SSL. El nombre de usuario y la contraseña es bastante sencillo. Asegúrese de que tiene las siguientes propiedades configuradas para habilitar la autenticación y SSL y debería funcionar.

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

Para el código de ejemplo añadir lo siguiente a TLS habilitado.

Para API-versiones <1.3 uso:
email.setTSL(true);
el método es obsoleto para las versiones> = 1.3, y en su lugar se debe utilizar: email.setStartTLSEnabled(true);

Otros consejos

A continuación un código que funciona. Obviamente, hay que añadir el tarro de Apache a la ruta de compilación de su proyecto.

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!");
}

Saludos, Sergiu

usando commons.email trabajó para mí.

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top