0

I am trying to send a email using SMTP of my yahoo(smtp.mail.yahoo.com) account to my gmail account.

But am getting following exception.

javax.mail.MessagingException: Exception reading response;
  nested exception is:
        java.net.SocketException: Connection reset
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2153)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1912)
        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 Sendmail.postMail(Sendmail.java:40)
        at Sendmail.main(Sendmail.java:49)
Caused by: java.net.SocketException: Connection reset
        at java.net.SocketInputStream.read(SocketInputStream.java:168)
        at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:110)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
        at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89)
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2131)
        ... 9 more
BUILD SUCCESSFUL (total time: 2 seconds)


import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

Code:

public class Sendmail {

    public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException {

        boolean debug = false;

        // Set the host smtp address
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.mail.yahoo.com");

        // create some properties and get the default Session
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(debug);

        // create a message
        Message msg = new MimeMessage(session);

        // set the from and to address
        InternetAddress addressFrom = new InternetAddress(from);
        msg.setFrom(addressFrom);

        InternetAddress[] addressTo = new InternetAddress[recipients.length];
        for (int i = 0; i < recipients.length; i++) {
            addressTo[i] = new InternetAddress(recipients[i]);
        }
        msg.setRecipients(Message.RecipientType.TO, addressTo);


        // Optional : You can also set your custom headers in the Email if you Want
        msg.addHeader("MyHeaderName", "myHeaderValue");

        // Setting the Subject and Content Type
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        Transport.send(msg);
    }

    public static void main(String[] args) {

        try{

            Sendmail sende = new Sendmail();
            String senderemailid [] = {"[email protected]"};
            sende.postMail(senderemailid,"Hi","Come to room","[email protected]");

        }catch(MessagingException e){
            e.printStackTrace();
        }        
    }
}
5
  • Please provide a (short) example of code that is causing this error. Commented Apr 14, 2011 at 6:41
  • Most likely you're using the wrong server: mpandit-mbp:~ mpandit$ telnet smtp.mail.yahoo.com 25 Trying 74.6.228.71... telnet: connect to address 74.6.228.71: Connection refused Trying 98.138.84.55... Connected to smtp.mail.us.am0.yahoodns.net. Escape character is '^]'. 220 smtp110.mail.ne1.yahoo.com ESMTP help 214 SMTP RFC: http://tools.ietf.org/html/rfc2821 Commented Apr 14, 2011 at 6:53
  • Sorry for the messy formatting - did not realize I did not put line breaks Commented Apr 14, 2011 at 7:00
  • so do you say it is problem with smtp server. Commented Apr 14, 2011 at 7:03
  • for me it is connecting.. telnet smtp.mail.yahoo.com 25 gives the following output.. [220 smtp109.mail.gq1.yahoo.com ESMTP] Commented Apr 14, 2011 at 7:07

4 Answers 4

1

smtp.mail.yahoo.net is a CNAME that points to a number of different mail servers. Yahoo happens to be having some problems with their mail servers today...

broach@broach-laptop:~$ telnet smtp.mail.yahoo.com 25
Trying 98.136.185.95...
Connected to smtp.mail.us.am0.yahoodns.net.
Escape character is '^]'.
Connection closed by foreign host.

broach@broach-laptop:~$ telnet smtp.mail.yahoo.com 25
Trying 98.138.84.55...
Connected to smtp.mail.us.am0.yahoodns.net.
Escape character is '^]'.
220 smtp113.mail.ne1.yahoo.com ESMTP

broach@broach-laptop:~$ telnet smtp.mail.yahoo.com 25
Trying 98.139.212.139...
Connected to smtp.mail.us.am0.yahoodns.net.
Escape character is '^]'.
Connection closed by foreign host.

Trying 5 times just now I got 3 failures and 2 connects.

Sign up to request clarification or add additional context in comments.

3 Comments

Catch the exception and retry ... which you should be doing anyway.
Hi, again.. I tried a whole yesterday to resolve this exception.. I found out few more things.. and few more exceptions.. 1. javax.mail.MessagingException and java.net.SocketException may be caused because of poor smtp server.
2. I have access restrictions to all of my email accounts.. 3. This link gave me little idea. thats it..... And the new exception I got were 1.javax.mail.SendFailedException:Invalid Addresses; 2. nested exception is:com.sun.mail.smtp.SMTPAddressFailedException:550 5.7.1 Unable to relay
0

Try to set the mail.transport.protocol property

props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", "25");

You do need some other piece of code to authentication though. Yahoo requires you to authenticate yourself prior to using their smtp service - they don't allow anybody to use their smtp server for relaying

2 Comments

If I add that statement.. it shows, javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.com, port: 25;
@Poornachandra, OK, you are then missing this props.put("mail.smtp.port", "25");
0

This is my code just in case:

 import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;

    public class SendEmail
    {
       public static void main(String [] args)
       {    
          // Recipient's email ID needs to be mentioned.
          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
          properties.put("mail.transport.protocol", "smtp");
          properties.put("mail.smtp.port", "25");
          properties.put("mail.smtp.host", "smtp.mail.yahoo.com.net");

          // Get the default Session object.
          Session session = Session.getDefaultInstance(properties);

          try{
             // 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("This is actual message");

             // Send message
             Transport.send(message);
             System.out.println("Sent message successfully....");
          }catch (MessagingException mex) {
             mex.printStackTrace();
          } //catch(Message)
       }
    }

Comments

0

(2019 July)

I got this Exception too, what fixed for me is:

(I'm using multiple servers)

  1. Stopped each server (make sure the the server you start last, you run first (check which server depends on which), basically stop servers in DESC running order);

  2. Close Eclipse (I'm using Eclipse Java EE IDE for Web Developers. Version: Neon.3 Release (4.6.3) Build id: 20170314-1500);

(2.5. Check and kill any other java processes related to your project)

  1. Start Eclipse and run servers in corerct order and your classes, etc.

In my case, restart helped me to send email.

Comments

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.