2009-05-11 12 views
10

Ich benutze Apache Commons Email-Bibliothek, um 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, der mit GMail SMTP-Server und anderen funktioniert?Senden von E-Mail in Java mit Apache Commons E-Mail-Bibliotheken

ich den folgenden Code verwenden, die nicht funktioniert:

String[] recipients = {"[email protected]"}; 

SimpleEmail email = new SimpleEmail(); 
email.setHostName("smtp.gmail.com"); 
email.setAuthentication("[email protected]", "mypasswd"); 
email.setDebug(true); 
email.setSmtpPort(465); 

for (int i = 0; i < recipients.length; i++) 
{ 
    email.addTo(recipients[i]); 
} 

email.setFrom("[email protected]", "Me"); 
email.setSubject("Test message"); 
email.setMsg("This is a simple test of commons-email"); 
email.send(); 

Antwort

10

Senden von E-Mail an dem GMail SMTP-Server erfordert Authentifizierung und SSL. Der Benutzername und das Passwort sind ziemlich einfach. Stellen Sie sicher, dass Sie die folgenden Eigenschaften festgelegt haben, um die Authentifizierung und SSL zu aktivieren, und es sollte funktionieren.

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

Fügen Sie dem Beispielcode Folgendes hinzu, um TLS zu aktivieren.

Für API-Versionen < 1.3 Verwendung:
email.setTSL(true);
das Verfahren für die Versionen veraltet> = 1,3, und stattdessen sollten Sie verwenden: email.setStartTLSEnabled(true);

2

mit commons.email für mich gearbeitet.

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

Hier finden Sie einen Code, der funktioniert. Offensichtlich müssen Sie das Apache-Jar zum Build-Pfad Ihres Projekts hinzufü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("[email protected]"); 
    email.setSubject("Hi"); 
    email.setMsg("This is a test mail ... :-)"); 
    email.addTo("[email protected]"); 
    email.setTLS(true); 
    email.send(); 
    System.out.println("Mail sent!"); 
} 

Grüße, Sergiu