1

I'm trying to sned a mail using the below code :-

java.awt.EventQueue.invokeLater(
                new Runnable() {

                    @Override
                    public void run() {

                        new SwingWorker<Void, Integer>() {

                            String to = "[email protected]";
                            // Sender's email ID needs to be mentioned
                            String from = "[email protected]";
                            // Assuming you are sending email from localhost
                            String host = "localhost";
                            // Get system properties
                         //   Properties properties = System.getProperties();

                            // Setup mail server


                            protected Void doInBackground() throws Exception {
                                try {
Properties properties =  new Properties();
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.starttls.enable", "true");
        // Get the default Session object.
        Session session = Session.getDefaultInstance(properties);

                                    // Create a default MimeMessage object.
                                    MimeMessage message = new MimeMessage(session);

                                    // Set From: header field of the header.
                                    message.setFrom(new InternetAddress(from));

                                    // Set To: header field of the header.
                                    message.addRecipient(Message.RecipientType.TO,
                                            new InternetAddress(to));

                                    // Set Subject: header field
                                    message.setSubject("This is the Subject Line!");

                                    // Now set the actual message
                                    message.setText("Message" + jTextField1.getText() + " xx " + jTextField2.getText());

                                    // Send message
                                    Transport.send(message);

                                } catch (Exception x) {
                                    x.printStackTrace();
                                }
                                return null;
                            }

                            protected void process() {

                            }

                            protected void done() {
                                try {

                                    JOptionPane.showMessageDialog(null, "You'll get a response from our team shortly !");

                                } catch (Exception x) {
                                }

                            }
                        }.execute();
                    }

On call of the above code i'm getting an Exception :

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is:
    java.net.SocketException: Permission denied: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at ims.Activation$5$1.doInBackground(Activation.java:374)
    at ims.Activation$5$1.doInBackground(Activation.java:327)
    at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at javax.swing.SwingWorker.run(SwingWorker.java:335)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.SocketException: Permission denied: connect
    at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
    ... 15 more

How can i resolve this?

2
  • Is your local machine set up as a valid SMTP host? Commented Mar 18, 2013 at 19:16
  • @c.pramod are you using JDK 7 Commented Mar 18, 2013 at 19:19

1 Answer 1

3

Unless you are running a mail server on your local environment, then you are going to need to specify one via additional mail properties:

properties.put("mail.smtp.host", aHost);

As an example, if you were using the Gmail relay, you would have:

properties.put("mail.smtp.host", "smtp.gmail.com");

In addition you need the mail.smtp.auth property setup for the session.

properties.put("mail.smtp.auth", true);

Depending on which host you end up using, you will probably also need to supply authentication information. For example, again with the Gmail relay:

Session session = Session.getDefaultInstance(props,
    new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("someUserName", "somePassword");
        }
    }
);
Sign up to request clarification or add additional context in comments.

4 Comments

did exactly the same . Now i'm getting com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Exception
@c.pramod - you actually need to supply valid credentials (I assume you're using the Gmail relay?). Fill in your account username and password where shown in the example.
i added this line properties.put("mail.smtp.auth", "true"); and it worked .. Thx for the reply BTW !!
Edited answer to include the missing property, and np. Good luck with the rest of the project.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.