Sowmya Elakadhar
Sowmya Elakadhar

Reputation: 1

sending email using java code through smtp

I'm getting this below error and timeout exception.

enter code:

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");
props.put("mail.debug", "true");

DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL true Exceptioninthread"main"java.lang.RuntimeException:com.sun.mail.util.MailConnectException: Couldn't connect to host,port:smtp.gmail.com, 587; timeout -1.

Upvotes: 0

Views: 2256

Answers (2)

Bill Shannon
Bill Shannon

Reputation: 29971

Ignore most of the other answers and comments, which are wrong or irrelevant. Many of them include these common JavaMail mistakes. Your original code was fine.

See the JavaMail FAQ for GMail instructions.

Most likely you can't connect because there is some firewall preventing direct access. The JavaMail FAQ has connection debugging tips.

If you can't connect directly and need to connect through a proxy server, the JavaMail FAQ also covers that.

Upvotes: 0

Prakash Jethava
Prakash Jethava

Reputation: 200

private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {
    Properties props = System.getProperties();
    String host = "smtp.gmail.com";
  //String host="localhost";
  //props.put("mail.smtp.ssl.trust", "smtp.gmail.com");
    props.put("mail.smtp.starttls.enable", "true");
  //props.put("mail.smtp.host", host);
    props.put("mail.smtp.ssl.trust", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "587");//587
    props.put("mail.smtp.auth", "true");
  //System.out.println("1");

    Session session = Session.getDefaultInstance(props);
    MimeMessage message = new MimeMessage(session);

    try {
         //System.out.println("2");

        message.setFrom(new InternetAddress(from));
        InternetAddress[] toAddress = new InternetAddress[to.length];

        // To get the array of addresses
        for( int i = 0; i < to.length; i++ ) {
            toAddress[i] = new InternetAddress(to[i]);
        }

        for( int i = 0; i < toAddress.length; i++) {
            message.addRecipient(Message.RecipientType.TO, toAddress[i]);
        }

         //System.out.println("3");

        message.setSubject(subject);
        message.setText(body);
        // System.out.println("4");

        Transport transport = session.getTransport("smtp");
        // System.out.println("5");

        transport.connect(host, from, pass);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
        //System.out.println("sent successfully...");
    }
    catch (AddressException ae) {
        ae.printStackTrace();
    }
    catch (MessagingException me) {
        me.printStackTrace();
    }
  }

calling above method and pass these parameters to the method

private static String USER_NAME = "xxxx";  // username "@gmail.com")
private static String PASSWORD = "xxxx"; // password
private static String RECIPIENT = "[email protected]";

public static void main(String[] args) {
    String from = USER_NAME;
    String pass = PASSWORD;
    String[] to = { RECIPIENT }; // list of recipient email addresses
    String subject = "Java send mail example";
    String body = "Welcome to JavaMail!";

    sendFromGMail(from, pass, to, subject, body);
}

And i used following jar files ,

java-mail-1.4.4
javamail-smtp-1.4.2
pop3
mail-6.0.0-sources

Upvotes: 1

Related Questions