E-Mail wird in Java mit Apache Commons E-Mail-Libs
-
21-08-2019 - |
Frage
Ich bin mit Apache Commons E-Mail-Bibliothek E-Mails zu senden, aber ich bin nicht in der Lage, sie über GMail SMTP-Server zu senden.
Kann jemand Beispielcode zur Verfügung stellen, die mit GMail SMTP-Server und anderen funktionieren?
Ich verwende den folgenden Code, die nicht funktioniert:
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();
Lösung
E-Mails an den GMail SMTP-Server gesendet erfordert Authentifizierung und SSL. Der Benutzername und das Passwort ist ziemlich geradlinig. Stellen Sie sicher, Sie haben die folgenden Eigenschaften festgelegt, damit die Authentifizierung und SSL und es sollte funktionieren.
mail.smtp.auth=true
mail.smtp.starttls.enable=true
Zum Beispielcode des folgenden Code zu aktivieren, damit TLS.
Für API-Versionen <1.3 Verwendung:
email.setTSL(true);
Das Verfahren ist für die Versionen veraltet> = 1,3, und stattdessen sollten Sie verwenden: email.setStartTLSEnabled(true);
Andere Tipps
Bitte unter einem Code finden, die funktioniert. Offensichtlich haben Sie den Apache-jar Ihres Projekts Build-Pfad hinzuzufügen.
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!");
}
Viele Grüße, Sergiu
mit commons.email arbeitete für mich.
HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);