2009-11-23 53 views
6
Email email = new SimpleEmail(); 
String authuser = "[email protected]"; 
String authpwd = "*******"; 
// Very Important, Don't use email.setAuthentication() 
email.setSmtpPort(465); 
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd)); 
email.setDebug(true); // true if you want to debug 
email.setHostName("smtp.gmail.com"); 

email.getMailSession().getProperties().put("mail.smtp.auth", "true"); 
email.getMailSession().getProperties().put("mail.debug", "true"); 
email.getMailSession().getProperties().put("mail.smtp.port", "465"); 
email.getMailSession().getProperties().put("mail.smtp.socketFactory.port", "465"); 
email.getMailSession().getProperties().put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
email.getMailSession().getProperties().put("mail.smtp.socketFactory.fallback", "false"); 
email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true"); 
email.setFrom("[email protected]", "SenderName"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail?"); 
email.addTo("[email protected]", "ToName"); 
email.send(); 

và nó mang lại cho các ngoại lệ sau đâyGửi Email Sử dụng Commons-email sang Gmail

SEVERE: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:465 
+0

Bạn có thể đăng toàn bộ dấu vết ngăn xếp ngoại lệ không? Nguyên nhân của ngoại lệ có thể được liệt kê ở đâu đó trong đó. Ngoại lệ là chung chung. Nó có thể là một lỗi xác thực đơn giản hoặc nó có thể là cái gì khác. cheers – aldrin

Trả lời

14

này làm việc cho tôi

Email email = new SimpleEmail(); 
String authuser = "[email protected]"; 
String authpwd = "xxxx"; 
email.setSmtpPort(587); 
email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd)); 
email.setDebug(true); 
email.setHostName("smtp.gmail.com"); 
email.getMailSession().getProperties().put("mail.smtps.auth", "true"); 
email.getMailSession().getProperties().put("mail.debug", "true"); 
email.getMailSession().getProperties().put("mail.smtps.port", "587"); 
email.getMailSession().getProperties().put("mail.smtps.socketFactory.port", "587"); 
email.getMailSession().getProperties().put("mail.smtps.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
email.getMailSession().getProperties().put("mail.smtps.socketFactory.fallback", "false"); 
email.getMailSession().getProperties().put("mail.smtp.starttls.enable", "true"); 
email.setFrom("[email protected]", "SenderName"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail?"); 
email.addTo("[email protected]", "ToName"); 
email.setTLS(true); 
email.send(); 
+0

Thử nó với smtps là tốt, không hoạt động – user217029

+0

không hoạt động với 587 là tốt .. sẽ không làm việc – user217029

+0

Kiểm tra mở rộng câu trả lời một lần nữa – jitter

10

Đừng bạn cần phải tell Commons Email that you're sending a TLS email:

email.setTLS(true); 

trước cuộc gọi của bạn tới email.send()?

Tôi không chắc chắn nếu điều này sẽ khắc phục những gì ails bạn, vì tôi không chắc chắn cho dù bạn đang gặp một vấn đề kết nối với smtp.gmail.com:465 hoặc gửi thành công đến nó (thông báo lỗi/ngoại lệ là mơ hồ như bạn đã trình bày nó), nhưng nó chắc chắn là một cái gì đó đó là mất tích cho đến nay như tôi có thể nói.

13

Hướng dẫn sử dụng Email của Commons có ví dụ về Gmail bằng SSL.

https://commons.apache.org/proper/commons-email/userguide.html

SSL/TLS (Port 465) -> email.setSSLOnConnect (true);

Email email = new SimpleEmail(); 
email.setHostName("smtp.gmail.com"); 
email.setSmtpPort(465); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setSSLOnConnect(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send(); 

STARTTLS (Port 587) -> email.setStartTLSEnabled (true);

Email email = new SimpleEmail(); 
email.setHostName("smtp.gmail.com"); 
email.setSmtpPort(587); 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setStartTLSEnabled(true); 
email.setFrom("[email protected]"); 
email.setSubject("TestMail"); 
email.setMsg("This is a test mail ... :-)"); 
email.addTo("[email protected]"); 
email.send(); 
+0

Mã này hoạt động cho tôi! Cảm ơn! – Ascension

+0

Tôi đang nhận lớp javax.mail.MessagingException: 530 5.7.0 Phải phát hành một lệnh STARTTLS trước. g66sm11757390ywh.8 - gsmtp ngoại lệ. Nhưng, tôi đã cập nhật mã giống như mã của bạn. – Curious

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