I am trying to send the mail through java code via gmail smtp
server but facing java.net.SocketException: Connection Reset
Following is the code to send mails:-`
Properties props = new Properties();
props.put("mail.smtp.host",host); //host is smtp.gmail.com
if(host.equalsIgnoreCase("smtp.gmail.com"))
{
props.put("mail.smtp.socketFactory.port",port);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port",port);//port is 465
}
else
{
props.put("mail.smtp.auth", "true");
}
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(uname,pwd);
}
});
try {
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(uname));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(toMail));
message.setSubject(NewFolderName);
System.out.println("Composing message body.");
StringBuilder htmlStreamBuilder = new StringBuilder();
// we create some html string here.....
Multipart multipart = new MimeMultipart();
MimeBodyPart htmlPart = new MimeBodyPart();
MimeBodyPart attachmentPart= new MimeBodyPart();
DataSource source = new FileDataSource(filename);
attachmentPart.setDataHandler(new DataHandler(source));
attachmentPart.setFileName(KMAConstants.TESTNG_ATTACHMENT_FILE);
htmlPart.setContent(htmlStream, "text/html; charset=utf-8");//we give some html stream here ....
multipart.addBodyPart(htmlPart);
multipart.addBodyPart(attachmentPart);
message.setContent(multipart);
Transport.send(message);
} catch (MessagingException e)
{
System.out.println("Issue in message sending, MessagingExceptionn raised.");
e.printStackTrace();
throw e;
}
}
`
It throws the following error:- `
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false DEBUG SMTP: exception reading response, THROW: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:209) at java.net.SocketInputStream.read(SocketInputStream.java:141) at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:124) at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) at java.io.BufferedInputStream.read(BufferedInputStream.java:265) at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89) at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2184) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1939) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) at javax.mail.Service.connect(Service.java:367) at javax.mail.Service.connect(Service.java:226) at javax.mail.Service.connect(Service.java:175) at javax.mail.Transport.send0(Transport.java:253) at javax.mail.Transport.send(Transport.java:124) at com.rsi.kma.common.utils.KmaUtil.sendMailNow(KmaUtil.java:1907) at com.rsi.kma.ui.testconfigureui.FileProcessingTask.call(FileProcessingTask.java:401) at com.rsi.kma.ui.testconfigureui.FileProcessingTask.call(FileProcessingTask.java:1) at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:745) Issue in message sending, MessagingExceptionn raised.
`
An important point to note here is that this code works on some computers.
Please help me out, Thanks in advance.
Network policies were blocking the request to SMTP server.I contacted my network administrator and he gave me required permissions.Now everything is working fine.