2009-05-11 27 views
10

Tôi đang sử dụng thư viện Email của Apache Commons để gửi email, nhưng tôi không thể gửi chúng qua máy chủ SMTP của Gmail.
Có ai có thể cung cấp mã mẫu làm việc với máy chủ SMTP của Gmail và các máy khác không?Gửi email bằng Java sử dụng thư điện tử của Apache Commons

Tôi đang sử dụng đoạn mã sau đó không hoạt động:

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

Trả lời

10

Gửi email đến máy chủ Gmail SMTP yêu cầu xác thực và SSL. Tên người dùng và mật khẩu khá thẳng về phía trước. Đảm bảo bạn có các thuộc tính sau được đặt để bật xác thực và SSL và nó sẽ hoạt động.

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

Để mã mẫu thêm sau đây để bật TLS.

Đối với API phiên bản < 1.3 sử dụng:
email.setTSL(true);
phương pháp này không được dùng cho các phiên bản> = 1.3, và thay vào đó bạn nên sử dụng: email.setStartTLSEnabled(true);

2

sử dụng commons.email làm việc cho tôi.

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

Vui lòng tìm bên dưới mã hoạt động. Rõ ràng, bạn phải thêm jar apache vào đường dẫn xây dựng của dự án của bạn.

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

Kính trọng, Sergiu

Các vấn đề liên quan