2009-05-11 66 views
10

我使用Apache Commons電子郵件庫來發送電子郵件,但我無法通過GMail SMTP服務器發送它們。
任何人都可以提供與GMail SMTP服務器和其他人一起使用的示例代碼?使用Apache Commons電子郵件庫以Java發送電子郵件

我使用下面的代碼不工作:

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

回答

10

發送電子郵件到Gmail的SMTP服務器需要身份驗證和SSL。用戶名和密碼非常簡單。確保您已將以下屬性設置爲啓用身份驗證和SSL,並且它應該可以正常工作。

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

對於示例代碼,添加以下內容以啓用TLS。

對於API的版本< 1.3用途:
email.setTSL(true);
方法已經廢棄了的版本> = 1.3,相反,你應該使用:使用commons.email email.setStartTLSEnabled(true);

2

爲我工作。

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

請在下面找到一個可用的代碼。顯然,你必須添加apache jar到你的項目的構建路徑。

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

問候, 的Sergiu