2009-05-11 11 views
10

Używam biblioteki e-mail Apache Commons do wysyłania e-maili, ale nie mogę ich wysłać przez serwer SMTP GMail.
Czy każdy może podać przykładowy kod, który działa z serwerem GMTP SMTP i innymi?Wysyłanie wiadomości e-mail w Javie przy użyciu Apache Commons e-mail libs

używam następujący kod, który nie działa:

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(); 

Odpowiedz

10

Wysyłanie e-maili do serwera GMail SMTP wymaga uwierzytelnienia i SSL. Nazwa użytkownika i hasło są całkiem proste. Upewnij się, że masz ustawione następujące właściwości, aby włączyć uwierzytelnianie i SSL i powinno działać.

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

Do kodu przykładowego dodaj następujące pozycje do włączonego TLS.

Dla API wersji < 1,3 Zastosowanie:
email.setTSL(true);
metoda jest przestarzała dla wersji> = 1.3, a zamiast tego należy użyć: email.setStartTLSEnabled(true);

2

korzystających commons.email pracował dla mnie.

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

Poniżej znajduje się kod, który działa. Oczywiście musisz dodać słoik apache do ścieżki budowania twojego projektu.

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

Pozdrawiam, Sergiu