views:

1056

answers:

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

and it gives the following exception

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

A: 

This does work for me

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();
jitter
Tried it with smtps as well, doesn't work
doesn't work with 587 as well..still doesn't work
Check expanded answer again
jitter
+3  A: 

Don't you need to tell Commons Email that you're sending a TLS email:

email.setTLS(true);

prior to your call to email.send()?

I'm not sure if this will fix what ails you, since I'm not sure whether you're experiencing a problem connecting to smtp.gmail.com:465 or successfully sending to it (the error message/exception is ambiguous as you've presented it), but it's definitely something that's missing so far as I can tell.

delfuego
A: 

Can you post the entire exception stack trace? The cause of the exception is probably listed somewhere in it. The exception is generic. It could be a simple authentication failure or it could be something else.

cheers

aldrin
A: 

If you follow delfuego's advice, email.setTLS(true), the client should then try to connect to 587, as pointed out by jitter.

Dean J