Domanda

Sto usando Apache Commons libreria E-mail per inviare messaggi di posta elettronica, ma non sono in grado di inviare loro attraverso il server SMTP di Gmail.
Qualcuno può fornire il codice di esempio che funziona con il server SMTP e altri GMail?

Sto usando il seguente codice che non funziona:

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();
È stato utile?

Soluzione

L'invio di messaggi di posta elettronica al server SMTP di Gmail richiede l'autenticazione e SSL. Il nome utente e la password è piuttosto semplice. Assicurarsi di avere le seguenti proprietà impostate per attivare l'autenticazione e SSL e dovrebbe funzionare.

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

Per il codice di esempio aggiungere quanto segue al abilitato TLS.

Per API-versioni <1.3 uso:
email.setTSL(true);
il metodo è deprecato per le versioni> = 1.3, e invece si dovrebbe usare: email.setStartTLSEnabled(true);

Altri suggerimenti

Di seguito riportiamo un codice che funziona. Ovviamente, si deve aggiungere il vaso apache al percorso di generazione del progetto.

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

Saluti, Sergiu

utilizzando commons.email ha lavorato per me.

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top