0
votes

I am sending mail through gmail coount using port 465. I am sending mail in loop.(reciients are present in a list)

I am able to send first mail succesfully , but as soon as second mail shoots

I get error unalbe to connect smtp.gmail.com at 465.

enter code hereprops.put("mail.smtp.host", smtp_host); props.put("mail.smtp.port", smtp_port); props.put("mail.smtp.user", smtp_user);

         props.put("mail.smtp.auth", AUTH);
         props.put("mail.smtp.starttls.enable", STARTTLS);
         props.put("mail.smtp.debug", DEBUG);

         props.put("mail.smtp.socketFactory.port", smtp_port);
         props.put("mail.smtp.socketFactory.class", socket_factory));
         props.put("mail.smtp.socketFactory.fallback", "false");

try {

             //Obtain the default mail session
             Session session = Session.getDefaultInstance(props, null);
             session.setDebug(true);

             //Construct the mail message
             MimeMessage message = new MimeMessage(session);
             message.setFrom(new InternetAddress(from));
             message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));


             message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc));
                              message.setSubject(subject);

             message.setContent(messageText, "text/html");
             message.setHeader("Content-Type" , "text/html" );
             message.saveChanges();

             //Use Transport to deliver the message
             Transport transport = session.getTransport("smtp");
             transport.connect(HOST, USER, PASSWORD);
             transport.sendMessage(message, message.getAllRecipients());
             transport.close();

         } catch (Exception e) {
             e.printStackTrace();
         }
1
Don't .close() in the try block! Use a finally block - fge

1 Answers

1
votes

Use Port 587 for TLS/STARTTLS. And following properties only if you use TLS/STARTTLS

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

And if you are trying to connect through SSL. Try only this -

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, null);

Change this with -

Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("[email protected]", "password");
        }
      });