Failed to connect to SMTP host exception while sending mail through JavaMail API

I am trying to send an email to a Gmail account using the JavaMail API. I made the following code. I want to send mail to multiple recipients. But that does not work. This gives an exception like "failed to connect to SMTP host.sending failed"

package com.cts.email; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { Properties emailProperties; Session mailSession; MimeMessage emailMessage; public static void main(String args[]) throws MessagingException, javax.mail.MessagingException { SendEmail javaEmail = new SendEmail(); Session session=javaEmail.setMailServerProperties(); javaEmail.createEmailMessage(session); // javaEmail.sendEmail(); } public Session setMailServerProperties() { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("my_email","my_password"); } }); return session; } public void createEmailMessage(Session session) throws MessagingException, javax.mail.MessagingException { String[] toEmails = { " mahesh.ece9@gmail.com "," sandeepreddy792@gmail.com " }; try { for (String to_mail : toEmails) { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(" mahesh.ece9@gmail.com ")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to_mail)); message.setSubject("Java Email"); message.setText("This is an email sent by <b>JavaMail</b> api."); Transport.send(message); } System.out.println("Done"); }catch (MessagingException e) { throw new RuntimeException(e); } } } 

I get the following exception:

 Exception in thread "main" java.lang.RuntimeException: javax.mail.SendFailedException: Sending failed; nested exception is: class javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; nested exception is: java.net.ConnectException: Connection refused: connect at com.cts.email.SendEmail.createEmailMessage(SendEmail.java:62) at com.cts.email.SendEmail.main(SendEmail.java:21) Caused by: javax.mail.SendFailedException: Sending failed; nested exception is: class javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465; nested exception is: java.net.ConnectException: Connection refused: connect at javax.mail.Transport.send0(Transport.java:218) at javax.mail.Transport.send(Transport.java:80) at com.cts.email.SendEmail.createEmailMessage(SendEmail.java:55) ... 1 more 

please help me with this.

+11
java javamail
source share
3 answers

This works for me:

 import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail { public static void sendEmail(String to) { final String username = "your_usename_goes_here"; final String password = "your_password_goes_here"; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(" fromSomeone@gmail.com ")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("A testing mail header !!!"); message.setText("Dear Mail Crawler," + "\n\n No spam to my email, please!"); Transport.send(message); System.out.println("Done"); } catch (MessagingException e) { // throw new RuntimeException(e); System.out.println("Username or Password are incorrect ... exiting !"); } } public static void main(String[] args) { String to = " toSomeone@gmail.com "; sendEmail(to); } } 
+9
source share

You almost certainly have a firewall or antivirus program blocking your connectivity. See the JavaMail FAQ for tips on debugging connection issues .

+3
source share

Be sure to configure antivirus software and a firewall to allow connections

 String user= " FROM@gmail.com "; String pass= "FROMPASSWORD"; String mailhost = "smtp.gmail.com"; Properties props= System.getProperties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.smtp.user", user); props.put("mail.smtp.password", pass); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.quitwait", "false"); Session session= Session.getDefaultInstance(props, new javax.mail.Authenticator() { @Override protected javax.mail.PasswordAuthentication getPasswordAuthentication(){ return new javax.mail.PasswordAuthentication(user,pass); } }); MimeMessage message= new MimeMessage(session); message.setFrom(new InternetAddress(" FROM@gmail.com ")); message.setRecipient(Message.RecipientType.TO, new InternetAddress(" TO@gmail.com ")); message.setSubject("Checking...."); message.setText("Successful",user,pass); Transport.send(message); System.out.println("Sent!"); 
0
source share

All Articles