简体   繁体   中英

unable to send an email to SMTP host

I am trying to send an email without SSL/TLS but receiving following exception:

javax.mail.MessagingException: Could not connect to SMTP host: mymail.test.com, port: 25;
 nested exception is:java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)

My code that send email : I have put System.setProperty("java.net.preferIPv4Stack" , "true") also as suggested in other posts and I m using java-6.

            String smtpHostServer = "mymail.test.com";
    String emailID = "user@test.com";
    System.setProperty("java.net.preferIPv4Stack" , "true");
    Properties props = System.getProperties();
    props.put("mail.smtp.host", smtpHostServer);
    props.put("mail.smtp.auth", "false");
    props.put("mail.smtp.starttls.enable", "false");

    Session session = Session.getDefaultInstance(props);
try {
        MimeMessage msg = new MimeMessage(session);
        // set message headers
        msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
        msg.addHeader("format", "flowed");
        msg.addHeader("Content-Transfer-Encoding", "8bit");

        msg.setFrom(new InternetAddress("noreply@test.com",
                "NoReply-JD"));

        msg.setReplyTo(InternetAddress.parse("noreply@test.com",
                false));

        msg.setSubject(subject, "UTF-8");

        msg.setText(body, "UTF-8");

        msg.setSentDate(new Date());

        msg.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(toEmail, false));
        System.out.println("Message is ready");
        Transport.send(msg);

        System.out.println("EMail Sent Successfully!!");
    } catch (Exception e) {
        e.printStackTrace();
    }
 <%@page contentType="text/html" pageEncoding="UTF-8"%>
 <!DOCTYPE html>
 <html>
  <head>
  <title>Simple Mail Program</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
 <body>
<%@page import="java.sql.*"%>
<%@page import="javax.mail.*"%>
 <%@page import="javax.mail.internet.*"%>
  <%@ page import="java.io.*"%>
  <%@ page import="java.sql.*"%>
  <%@page import="java.util.*"%>
  <%@ page import="java.math.BigInteger"%>



 <%
String host = "smtp.tctinfotech.com";
//host = smtp_server; //"smtp.gmail.com"; user = jsp_email; //"YourEmailId@gmail.com" // email id to send the emails
//pass = jsp_email_pw; //Your gmail password
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
String to_add = request.getParameter("receiver");
String subject =request.getParameter("subject"); 
String messageText =request.getParameter("body"); 
String password = request.getParameter("pwd");
String from =request.getParameter("email_id");
boolean sessionDebug = true;
Properties props = System.getProperties();
props.put("mail.host", host);
props.put("mail.transport.protocol.", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
Session mailSession = Session.getDefaultInstance(props, null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to_add) };
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setContent(messageText, "text/html"); // use setText if you want to send text
Transport transport = mailSession.getTransport("smtp");
System.setProperty("javax.net.ssl.trustStore", "conf/jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "admin");
transport.connect(host, from, password);
try 
{
    transport.sendMessage(msg, msg.getAllRecipients());
    out.println("sent");
    //WasEmailSent = true; // assume it was sent
}
catch (Exception err) 
{
    //WasEmailSent = false; // assume it's a fail
    out.println("Error" + err.getMessage());
}
transport.close();
%>
 </body>
 </html>

For Servlet Code visit This Link.

For above code just accept receiver and sender email id, password, subject and body part from user.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM