2010-01-25 2 views
1
Email email = new SimpleEmail(); 
String authuser = "[email protected]"; 
String authpwd = "*******"; 
// Very Important, Don't use email.setAuthentication() 
email.setSmtpPort(587); 
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", "587"); 
email.getMailSession().getProperties().put("mail.smtp.socketFactory.port", "587"); 
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.setTLS(true); 
email.send(); 
+0

답변을 업데이트합니다. 포트를 설정할 필요가 없습니다. – Bozho

답변

0

모두를 제거하십시오 email.getMailSession().getProperties() - 그들은 필요하지 않으며 설치를 오염시킬 수 있습니다.

그런 다음 포트를 설정하는 줄을 제거하십시오. (email.setSmtpPort(587);)

+0

email.getMailSession(). getProperties()를 모두 제거했지만 여전히 STARTTLS 명령 오류가 발생합니다. 또한 setSSL (true)을 수행 한 다음 오류 클래스를 가져옵니다. javax.mail.MessagingException : SMTP 호스트에 연결할 수 없습니다. smtp.gmail.com, port : 465; 중첩 예외는 다음과 같습니다. java.net.SocketException : 지정된 클래스를 찾을 수 없습니다. java.security.PrivilegedActionException : java.lang.ClassNotFoundException : com.ibm.websphere.ssl.protocol.SSLSocketFactory –