javax.mail does not want to send my mail from my web application but it send mail from my console appusing java mail message object between web applicationsJavaMail with Gmail: 535-5.7.1 Username and Password not acceptedEmail Client in javawhy mail content is sent as attachment when I send it to Hotmail account?smtp server to use for sending email through java mail apiSending mail from java code - the reliable wayTransport.send(message) throws Network is unreachable while trying to send the mail from my java applicationJavaMail - multiple sendersHandle exception in JavaMailSenderSending Multipart MimeMessage sends an empty email

voltage of sounds of mp3files

Valid Badminton Score?

If you attempt to grapple an opponent that you are hidden from, do they roll at disadvantage?

Confused about a passage in Harry Potter y la piedra filosofal

How was Earth single-handedly capable of creating 3 of the 4 gods of chaos?

Can criminal fraud exist without damages?

What will be the benefits of Brexit?

Bash method for viewing beginning and end of file

What is the opposite of 'gravitas'?

Was Spock the First Vulcan in Starfleet?

How can I use the arrow sign in my bash prompt?

Coordinate position not precise

Is exact Kanji stroke length important?

Is the destination of a commercial flight important for the pilot?

Greatest common substring

Is there a problem with hiding "forgot password" until it's needed?

How does it work when somebody invests in my business?

What is the intuitive meaning of having a linear relationship between the logs of two variables?

Everything Bob says is false. How does he get people to trust him?

Will it be accepted, if there is no ''Main Character" stereotype?

Understanding "audieritis" in Psalm 94

Is a roofing delivery truck likely to crack my driveway slab?

What's the purpose of "true" in bash "if sudo true; then"

What would happen if the UK refused to take part in EU Parliamentary elections?



javax.mail does not want to send my mail from my web application but it send mail from my console app


using java mail message object between web applicationsJavaMail with Gmail: 535-5.7.1 Username and Password not acceptedEmail Client in javawhy mail content is sent as attachment when I send it to Hotmail account?smtp server to use for sending email through java mail apiSending mail from java code - the reliable wayTransport.send(message) throws Network is unreachable while trying to send the mail from my java applicationJavaMail - multiple sendersHandle exception in JavaMailSenderSending Multipart MimeMessage sends an empty email













1















First of all I use glassfish4 server. When I try to send an e-mail from my web test app I get an exception that usually says:




javax.mail.MessagingException: Could not connect to SMTP host:
mail.host.com, port: 465, response: -1




(i also got another exception but I don't remember them), but from my SE application, it sends the e-mail correctly everytime. Also my coworker has the same code as I on his computer and the code works. I also tried to send an email with smtp.gmail.com and it works like charm, but when I try with our private server it does not work.



Here is the code from my web app:



 @WebServlet("/email")
public class Email extends HttpServlet
private static final String SUBJECT = "TEST";
private static final String CONTENT = "<h1>HI</h1>"
+ "<header style='width: 100%; height=20vh; background: #ffdd1a; color: #383e72;'>"
+ "<h1>TEST</h1>"
+ "<h2>KTHXBYE</h2>"
+ "</header>";

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
String name = req.getParameter("name"),
eMail = req.getParameter("eMail"),
server = req.getParameter("server"),
port = req.getParameter("port"),
encryption = req.getParameter("encryption"),
mailTo = req.getParameter("mailTo");
final String username = req.getParameter("username"),
pass = req.getParameter("pass");
resp.setCharacterEncoding("UTF-8");
Session session;

// setup acc props
Properties props = System.getProperties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp");

switch (povezava)
case "SSL":
props.put("mail.smtp.socketFactory.port", "port");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
break;
case "TLS":
props.put("mail.smtp.starttls.enable", "true");
break;
case "NONE":
props.put("mail.smtp.ssl.enable", "false");
props.put("mail.smtp.starttls.enable", "false");
props.put("mail.smtp.ssl.trust", server);
break;
default:
resp.getWriter().print("ERROR");
return;


Authenticator auth = new Authenticator()
@Override
protected PasswordAuthentication getPasswordAuthentication()
return new PasswordAuthentication(username, pass);

;

// create msg
session = Session.getDefaultInstance(props, auth);
session.setDebug(true);

MimeMessage message = new MimeMessage(session);
try
try
message.setFrom(new InternetAddress(eMail, name));
message.setSubject(SUBJECT);
MimeMultipart multipart = new MimeMultipart("related");
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
multipart.addBodyPart(bodyPart);
message.setContent(multipart);
// send msg
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
// Transport transport = session.getTransport("smtp");
// transport.connect(server, username, pass);
// transport.sendMessage(message, message.getAllRecipients());
Transport.send(message);
resp.getWriter().print("Mail was send successfully");
return;
catch (MessagingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

catch (UnsupportedEncodingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

resp.getWriter().print("Sending mail failed");




Stack trace from upper code:



javax.mail.MessagingException: Could not connect to SMTP host: mail.host.com, port: 465, response: -1
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2042)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:386)
at javax.mail.Service.connect(Service.java:245)
at javax.mail.Service.connect(Service.java:194)
at javax.mail.Transport.send0(Transport.java:253)
at javax.mail.Transport.send(Transport.java:124)
at com.zarja.testmail.Email.doPost(Email.java:113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:748)


Now my SE app code:



public static void main(String[] args) 
System.out.println(sendMyMail());


public static String sendMyMail()
try
String from = "mailaddress"; // not actual mail
String pass = "password";
Authenticator auth = new Authenticator()
@Override
protected PasswordAuthentication getPasswordAuthentication()
return new PasswordAuthentication(from, pass);

;

Session session;
//setup account properties
Properties props = System.getProperties();
props.put("mail.smtp.host", "mail.host.com");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");

session = Session.getDefaultInstance(props, auth);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from, "TEST"));
message.setSubject(SUBJECT);
MimeMultipart multipart = new MimeMultipart("related");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setContent(CONTENT, "text/html; charset=utf-8");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
//send message
try
message.setRecipient(Message.RecipientType.TO, new InternetAddress("host@gmail.com"));
// Transport transport = session.getTransport("smtp");
// transport.connect("mail.host.com", from, pass);
// transport.sendMessage(message, message.get

AllRecipients());
Transport .send(message);
return "SENT";
catch (Exception e)
e.printStackTrace();

catch (Exception e)
e.printStackTrace();

return "FAILED";



Thanks for the help in advance!



EDIT (how the code should actualy look):



protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
String name = req.getParameter("name"),
eMail = req.getParameter("eMail"),
server = req.getParameter("server"),
port = req.getParameter("port"),
encryption = req.getParameter("encryption"),
mailTo = req.getParameter("mailTo");
final String username = req.getParameter("username"),
pass = req.getParameter("pass");
resp.setCharacterEncoding("UTF-8");
Session session;

// setup acc props
Properties props = System.getProperties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "imap");

switch (enryption)
case "SSL":
props.put("mail.smtp.ssl.enable", "true");
break;
case "TLS":
props.put("mail.smtp.starttls.enable", "true");
break;
case "NONE":
props.put("mail.smtp.ssl.enable", "false");
props.put("mail.smtp.starttls.enable", "false");
props.put("mail.smtp.ssl.trust", server);
break;
default:
resp.getWriter().print("ERROR");
return;


// create msg
session = Session.getInstance(props);
session.setDebug(true);

MimeMessage message = new MimeMessage(session);
try
try
message.setFrom(new InternetAddress(eMail, name));
message.setSubject(SUBJECT);
MimeMultipart multipart = new MimeMultipart("related");
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
multipart.addBodyPart(bodyPart);
message.setContent(multipart);
// send msg
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTp));
Transport transport = session.getTransport("imap");
transport.connect(streznikPoste, uporabniskoIme, geslo);

Transport.send(message);
resp.getWriter().print("Mail was send successfully");
return;
catch (MessagingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

catch (UnsupportedEncodingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

resp.getWriter().print("Sending mail failed");



EDIT FIX (this seems to work):



protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
String name = req.getParameter("name"),
eMail = req.getParameter("eMail"),
server = req.getParameter("server"),
port = req.getParameter("port"),
encryption = req.getParameter("encryption"),
mailTo = req.getParameter("mailTo");
final String username = req.getParameter("username"),
pass = req.getParameter("pass");
resp.setCharacterEncoding("UTF-8");
Session session;

// setup acc props
Properties props = System.getProperties();
props.put("mail.smtp.host", server);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.ssl.trust", server);

switch (encryption)
case "SSL":
props.put("mail.smtp.ssl.enable", "true");
break;
case "TLS":
props.put("mail.smtp.starttls.enable", "true");
break;
case "NONE":
props.put("mail.smtp.ssl.enable", "false");
props.put("mail.smtp.starttls.enable", "false");
props.put("mail.smtp.ssl.trust", server);
break;
default:
resp.getWriter().print("ERROR");
return;


// create msg
session = Session.getInstance(props);
session.setDebug(true);

MimeMessage message = new MimeMessage(session);
try
try
message.setFrom(new InternetAddress(eMail, name));
message.setSubject(SUBJECT);
MimeMultipart multipart = new MimeMultipart("related");
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
multipart.addBodyPart(bodyPart);
message.setContent(multipart);
// send msg
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
Transport transport = session.getTransport();
transport.connect(server, username, pass);
Transport.send(message, username, pass);
resp.getWriter().print("Mail was send successfully");
return;
catch (MessagingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

catch (UnsupportedEncodingException ex)
Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

resp.getWriter().print("Sending mail failed");










share|improve this question




























    1















    First of all I use glassfish4 server. When I try to send an e-mail from my web test app I get an exception that usually says:




    javax.mail.MessagingException: Could not connect to SMTP host:
    mail.host.com, port: 465, response: -1




    (i also got another exception but I don't remember them), but from my SE application, it sends the e-mail correctly everytime. Also my coworker has the same code as I on his computer and the code works. I also tried to send an email with smtp.gmail.com and it works like charm, but when I try with our private server it does not work.



    Here is the code from my web app:



     @WebServlet("/email")
    public class Email extends HttpServlet
    private static final String SUBJECT = "TEST";
    private static final String CONTENT = "<h1>HI</h1>"
    + "<header style='width: 100%; height=20vh; background: #ffdd1a; color: #383e72;'>"
    + "<h1>TEST</h1>"
    + "<h2>KTHXBYE</h2>"
    + "</header>";

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    String name = req.getParameter("name"),
    eMail = req.getParameter("eMail"),
    server = req.getParameter("server"),
    port = req.getParameter("port"),
    encryption = req.getParameter("encryption"),
    mailTo = req.getParameter("mailTo");
    final String username = req.getParameter("username"),
    pass = req.getParameter("pass");
    resp.setCharacterEncoding("UTF-8");
    Session session;

    // setup acc props
    Properties props = System.getProperties();
    props.put("mail.smtp.host", server);
    props.put("mail.smtp.port", port);
    props.put("mail.smtp.auth", "true");
    props.put("mail.transport.protocol", "smtp");

    switch (povezava)
    case "SSL":
    props.put("mail.smtp.socketFactory.port", "port");
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    break;
    case "TLS":
    props.put("mail.smtp.starttls.enable", "true");
    break;
    case "NONE":
    props.put("mail.smtp.ssl.enable", "false");
    props.put("mail.smtp.starttls.enable", "false");
    props.put("mail.smtp.ssl.trust", server);
    break;
    default:
    resp.getWriter().print("ERROR");
    return;


    Authenticator auth = new Authenticator()
    @Override
    protected PasswordAuthentication getPasswordAuthentication()
    return new PasswordAuthentication(username, pass);

    ;

    // create msg
    session = Session.getDefaultInstance(props, auth);
    session.setDebug(true);

    MimeMessage message = new MimeMessage(session);
    try
    try
    message.setFrom(new InternetAddress(eMail, name));
    message.setSubject(SUBJECT);
    MimeMultipart multipart = new MimeMultipart("related");
    BodyPart bodyPart = new MimeBodyPart();
    bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
    multipart.addBodyPart(bodyPart);
    message.setContent(multipart);
    // send msg
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
    // Transport transport = session.getTransport("smtp");
    // transport.connect(server, username, pass);
    // transport.sendMessage(message, message.getAllRecipients());
    Transport.send(message);
    resp.getWriter().print("Mail was send successfully");
    return;
    catch (MessagingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    catch (UnsupportedEncodingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    resp.getWriter().print("Sending mail failed");




    Stack trace from upper code:



    javax.mail.MessagingException: Could not connect to SMTP host: mail.host.com, port: 465, response: -1
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2042)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
    at javax.mail.Service.connect(Service.java:386)
    at javax.mail.Service.connect(Service.java:245)
    at javax.mail.Service.connect(Service.java:194)
    at javax.mail.Transport.send0(Transport.java:253)
    at javax.mail.Transport.send(Transport.java:124)
    at com.zarja.testmail.Email.doPost(Email.java:113)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
    at java.lang.Thread.run(Thread.java:748)


    Now my SE app code:



    public static void main(String[] args) 
    System.out.println(sendMyMail());


    public static String sendMyMail()
    try
    String from = "mailaddress"; // not actual mail
    String pass = "password";
    Authenticator auth = new Authenticator()
    @Override
    protected PasswordAuthentication getPasswordAuthentication()
    return new PasswordAuthentication(from, pass);

    ;

    Session session;
    //setup account properties
    Properties props = System.getProperties();
    props.put("mail.smtp.host", "mail.host.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
    "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "465");

    session = Session.getDefaultInstance(props, auth);
    session.setDebug(true);
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from, "TEST"));
    message.setSubject(SUBJECT);
    MimeMultipart multipart = new MimeMultipart("related");
    BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setContent(CONTENT, "text/html; charset=utf-8");
    multipart.addBodyPart(messageBodyPart);
    message.setContent(multipart);
    //send message
    try
    message.setRecipient(Message.RecipientType.TO, new InternetAddress("host@gmail.com"));
    // Transport transport = session.getTransport("smtp");
    // transport.connect("mail.host.com", from, pass);
    // transport.sendMessage(message, message.get

    AllRecipients());
    Transport .send(message);
    return "SENT";
    catch (Exception e)
    e.printStackTrace();

    catch (Exception e)
    e.printStackTrace();

    return "FAILED";



    Thanks for the help in advance!



    EDIT (how the code should actualy look):



    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    String name = req.getParameter("name"),
    eMail = req.getParameter("eMail"),
    server = req.getParameter("server"),
    port = req.getParameter("port"),
    encryption = req.getParameter("encryption"),
    mailTo = req.getParameter("mailTo");
    final String username = req.getParameter("username"),
    pass = req.getParameter("pass");
    resp.setCharacterEncoding("UTF-8");
    Session session;

    // setup acc props
    Properties props = System.getProperties();
    props.put("mail.smtp.host", server);
    props.put("mail.smtp.port", port);
    props.put("mail.smtp.auth", "true");
    props.put("mail.transport.protocol", "imap");

    switch (enryption)
    case "SSL":
    props.put("mail.smtp.ssl.enable", "true");
    break;
    case "TLS":
    props.put("mail.smtp.starttls.enable", "true");
    break;
    case "NONE":
    props.put("mail.smtp.ssl.enable", "false");
    props.put("mail.smtp.starttls.enable", "false");
    props.put("mail.smtp.ssl.trust", server);
    break;
    default:
    resp.getWriter().print("ERROR");
    return;


    // create msg
    session = Session.getInstance(props);
    session.setDebug(true);

    MimeMessage message = new MimeMessage(session);
    try
    try
    message.setFrom(new InternetAddress(eMail, name));
    message.setSubject(SUBJECT);
    MimeMultipart multipart = new MimeMultipart("related");
    BodyPart bodyPart = new MimeBodyPart();
    bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
    multipart.addBodyPart(bodyPart);
    message.setContent(multipart);
    // send msg
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTp));
    Transport transport = session.getTransport("imap");
    transport.connect(streznikPoste, uporabniskoIme, geslo);

    Transport.send(message);
    resp.getWriter().print("Mail was send successfully");
    return;
    catch (MessagingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    catch (UnsupportedEncodingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    resp.getWriter().print("Sending mail failed");



    EDIT FIX (this seems to work):



    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
    String name = req.getParameter("name"),
    eMail = req.getParameter("eMail"),
    server = req.getParameter("server"),
    port = req.getParameter("port"),
    encryption = req.getParameter("encryption"),
    mailTo = req.getParameter("mailTo");
    final String username = req.getParameter("username"),
    pass = req.getParameter("pass");
    resp.setCharacterEncoding("UTF-8");
    Session session;

    // setup acc props
    Properties props = System.getProperties();
    props.put("mail.smtp.host", server);
    props.put("mail.smtp.port", port);
    props.put("mail.smtp.auth", "true");
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.ssl.trust", server);

    switch (encryption)
    case "SSL":
    props.put("mail.smtp.ssl.enable", "true");
    break;
    case "TLS":
    props.put("mail.smtp.starttls.enable", "true");
    break;
    case "NONE":
    props.put("mail.smtp.ssl.enable", "false");
    props.put("mail.smtp.starttls.enable", "false");
    props.put("mail.smtp.ssl.trust", server);
    break;
    default:
    resp.getWriter().print("ERROR");
    return;


    // create msg
    session = Session.getInstance(props);
    session.setDebug(true);

    MimeMessage message = new MimeMessage(session);
    try
    try
    message.setFrom(new InternetAddress(eMail, name));
    message.setSubject(SUBJECT);
    MimeMultipart multipart = new MimeMultipart("related");
    BodyPart bodyPart = new MimeBodyPart();
    bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
    multipart.addBodyPart(bodyPart);
    message.setContent(multipart);
    // send msg
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
    Transport transport = session.getTransport();
    transport.connect(server, username, pass);
    Transport.send(message, username, pass);
    resp.getWriter().print("Mail was send successfully");
    return;
    catch (MessagingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    catch (UnsupportedEncodingException ex)
    Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

    resp.getWriter().print("Sending mail failed");










    share|improve this question


























      1












      1








      1


      2






      First of all I use glassfish4 server. When I try to send an e-mail from my web test app I get an exception that usually says:




      javax.mail.MessagingException: Could not connect to SMTP host:
      mail.host.com, port: 465, response: -1




      (i also got another exception but I don't remember them), but from my SE application, it sends the e-mail correctly everytime. Also my coworker has the same code as I on his computer and the code works. I also tried to send an email with smtp.gmail.com and it works like charm, but when I try with our private server it does not work.



      Here is the code from my web app:



       @WebServlet("/email")
      public class Email extends HttpServlet
      private static final String SUBJECT = "TEST";
      private static final String CONTENT = "<h1>HI</h1>"
      + "<header style='width: 100%; height=20vh; background: #ffdd1a; color: #383e72;'>"
      + "<h1>TEST</h1>"
      + "<h2>KTHXBYE</h2>"
      + "</header>";

      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "smtp");

      switch (povezava)
      case "SSL":
      props.put("mail.smtp.socketFactory.port", "port");
      props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      Authenticator auth = new Authenticator()
      @Override
      protected PasswordAuthentication getPasswordAuthentication()
      return new PasswordAuthentication(username, pass);

      ;

      // create msg
      session = Session.getDefaultInstance(props, auth);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
      // Transport transport = session.getTransport("smtp");
      // transport.connect(server, username, pass);
      // transport.sendMessage(message, message.getAllRecipients());
      Transport.send(message);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");




      Stack trace from upper code:



      javax.mail.MessagingException: Could not connect to SMTP host: mail.host.com, port: 465, response: -1
      at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2042)
      at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
      at javax.mail.Service.connect(Service.java:386)
      at javax.mail.Service.connect(Service.java:245)
      at javax.mail.Service.connect(Service.java:194)
      at javax.mail.Transport.send0(Transport.java:253)
      at javax.mail.Transport.send(Transport.java:124)
      at com.zarja.testmail.Email.doPost(Email.java:113)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
      at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
      at java.lang.Thread.run(Thread.java:748)


      Now my SE app code:



      public static void main(String[] args) 
      System.out.println(sendMyMail());


      public static String sendMyMail()
      try
      String from = "mailaddress"; // not actual mail
      String pass = "password";
      Authenticator auth = new Authenticator()
      @Override
      protected PasswordAuthentication getPasswordAuthentication()
      return new PasswordAuthentication(from, pass);

      ;

      Session session;
      //setup account properties
      Properties props = System.getProperties();
      props.put("mail.smtp.host", "mail.host.com");
      props.put("mail.smtp.socketFactory.port", "465");
      props.put("mail.smtp.socketFactory.class",
      "javax.net.ssl.SSLSocketFactory");
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.port", "465");

      session = Session.getDefaultInstance(props, auth);
      session.setDebug(true);
      MimeMessage message = new MimeMessage(session);
      message.setFrom(new InternetAddress(from, "TEST"));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(messageBodyPart);
      message.setContent(multipart);
      //send message
      try
      message.setRecipient(Message.RecipientType.TO, new InternetAddress("host@gmail.com"));
      // Transport transport = session.getTransport("smtp");
      // transport.connect("mail.host.com", from, pass);
      // transport.sendMessage(message, message.get

      AllRecipients());
      Transport .send(message);
      return "SENT";
      catch (Exception e)
      e.printStackTrace();

      catch (Exception e)
      e.printStackTrace();

      return "FAILED";



      Thanks for the help in advance!



      EDIT (how the code should actualy look):



      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "imap");

      switch (enryption)
      case "SSL":
      props.put("mail.smtp.ssl.enable", "true");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      // create msg
      session = Session.getInstance(props);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTp));
      Transport transport = session.getTransport("imap");
      transport.connect(streznikPoste, uporabniskoIme, geslo);

      Transport.send(message);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");



      EDIT FIX (this seems to work):



      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "smtp");
      props.put("mail.smtp.ssl.trust", server);

      switch (encryption)
      case "SSL":
      props.put("mail.smtp.ssl.enable", "true");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      // create msg
      session = Session.getInstance(props);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
      Transport transport = session.getTransport();
      transport.connect(server, username, pass);
      Transport.send(message, username, pass);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");










      share|improve this question
















      First of all I use glassfish4 server. When I try to send an e-mail from my web test app I get an exception that usually says:




      javax.mail.MessagingException: Could not connect to SMTP host:
      mail.host.com, port: 465, response: -1




      (i also got another exception but I don't remember them), but from my SE application, it sends the e-mail correctly everytime. Also my coworker has the same code as I on his computer and the code works. I also tried to send an email with smtp.gmail.com and it works like charm, but when I try with our private server it does not work.



      Here is the code from my web app:



       @WebServlet("/email")
      public class Email extends HttpServlet
      private static final String SUBJECT = "TEST";
      private static final String CONTENT = "<h1>HI</h1>"
      + "<header style='width: 100%; height=20vh; background: #ffdd1a; color: #383e72;'>"
      + "<h1>TEST</h1>"
      + "<h2>KTHXBYE</h2>"
      + "</header>";

      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "smtp");

      switch (povezava)
      case "SSL":
      props.put("mail.smtp.socketFactory.port", "port");
      props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      Authenticator auth = new Authenticator()
      @Override
      protected PasswordAuthentication getPasswordAuthentication()
      return new PasswordAuthentication(username, pass);

      ;

      // create msg
      session = Session.getDefaultInstance(props, auth);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
      // Transport transport = session.getTransport("smtp");
      // transport.connect(server, username, pass);
      // transport.sendMessage(message, message.getAllRecipients());
      Transport.send(message);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");




      Stack trace from upper code:



      javax.mail.MessagingException: Could not connect to SMTP host: mail.host.com, port: 465, response: -1
      at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2042)
      at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
      at javax.mail.Service.connect(Service.java:386)
      at javax.mail.Service.connect(Service.java:245)
      at javax.mail.Service.connect(Service.java:194)
      at javax.mail.Transport.send0(Transport.java:253)
      at javax.mail.Transport.send(Transport.java:124)
      at com.zarja.testmail.Email.doPost(Email.java:113)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
      at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
      at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
      at java.lang.Thread.run(Thread.java:748)


      Now my SE app code:



      public static void main(String[] args) 
      System.out.println(sendMyMail());


      public static String sendMyMail()
      try
      String from = "mailaddress"; // not actual mail
      String pass = "password";
      Authenticator auth = new Authenticator()
      @Override
      protected PasswordAuthentication getPasswordAuthentication()
      return new PasswordAuthentication(from, pass);

      ;

      Session session;
      //setup account properties
      Properties props = System.getProperties();
      props.put("mail.smtp.host", "mail.host.com");
      props.put("mail.smtp.socketFactory.port", "465");
      props.put("mail.smtp.socketFactory.class",
      "javax.net.ssl.SSLSocketFactory");
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtp.port", "465");

      session = Session.getDefaultInstance(props, auth);
      session.setDebug(true);
      MimeMessage message = new MimeMessage(session);
      message.setFrom(new InternetAddress(from, "TEST"));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(messageBodyPart);
      message.setContent(multipart);
      //send message
      try
      message.setRecipient(Message.RecipientType.TO, new InternetAddress("host@gmail.com"));
      // Transport transport = session.getTransport("smtp");
      // transport.connect("mail.host.com", from, pass);
      // transport.sendMessage(message, message.get

      AllRecipients());
      Transport .send(message);
      return "SENT";
      catch (Exception e)
      e.printStackTrace();

      catch (Exception e)
      e.printStackTrace();

      return "FAILED";



      Thanks for the help in advance!



      EDIT (how the code should actualy look):



      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "imap");

      switch (enryption)
      case "SSL":
      props.put("mail.smtp.ssl.enable", "true");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      // create msg
      session = Session.getInstance(props);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTp));
      Transport transport = session.getTransport("imap");
      transport.connect(streznikPoste, uporabniskoIme, geslo);

      Transport.send(message);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");



      EDIT FIX (this seems to work):



      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
      String name = req.getParameter("name"),
      eMail = req.getParameter("eMail"),
      server = req.getParameter("server"),
      port = req.getParameter("port"),
      encryption = req.getParameter("encryption"),
      mailTo = req.getParameter("mailTo");
      final String username = req.getParameter("username"),
      pass = req.getParameter("pass");
      resp.setCharacterEncoding("UTF-8");
      Session session;

      // setup acc props
      Properties props = System.getProperties();
      props.put("mail.smtp.host", server);
      props.put("mail.smtp.port", port);
      props.put("mail.smtp.auth", "true");
      props.put("mail.transport.protocol", "smtp");
      props.put("mail.smtp.ssl.trust", server);

      switch (encryption)
      case "SSL":
      props.put("mail.smtp.ssl.enable", "true");
      break;
      case "TLS":
      props.put("mail.smtp.starttls.enable", "true");
      break;
      case "NONE":
      props.put("mail.smtp.ssl.enable", "false");
      props.put("mail.smtp.starttls.enable", "false");
      props.put("mail.smtp.ssl.trust", server);
      break;
      default:
      resp.getWriter().print("ERROR");
      return;


      // create msg
      session = Session.getInstance(props);
      session.setDebug(true);

      MimeMessage message = new MimeMessage(session);
      try
      try
      message.setFrom(new InternetAddress(eMail, name));
      message.setSubject(SUBJECT);
      MimeMultipart multipart = new MimeMultipart("related");
      BodyPart bodyPart = new MimeBodyPart();
      bodyPart.setContent(CONTENT, "text/html; charset=utf-8");
      multipart.addBodyPart(bodyPart);
      message.setContent(multipart);
      // send msg
      message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
      Transport transport = session.getTransport();
      transport.connect(server, username, pass);
      Transport.send(message, username, pass);
      resp.getWriter().print("Mail was send successfully");
      return;
      catch (MessagingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      catch (UnsupportedEncodingException ex)
      Logger.getLogger(Email.class.getName()).log(Level.SEVERE, null, ex);

      resp.getWriter().print("Sending mail failed");







      java javamail java-ee-7 glassfish-4






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 8 at 7:42







      Stu076

















      asked Mar 7 at 11:37









      Stu076Stu076

      3218




      3218






















          2 Answers
          2






          active

          oldest

          votes


















          2














          First, fix all these common JavaMail mistakes.



          If you can connect to one remote server but not another remote server, your configuration for that server is wrong, or you have a firewall that's preventing connection. The JavaMail FAQ has tips for debugging connection problems.






          share|improve this answer























          • Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

            – Stu076
            Mar 8 at 6:09











          • Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

            – Stu076
            Mar 8 at 7:44






          • 1





            You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

            – Bill Shannon
            Mar 8 at 22:40


















          2














          A quick guess is that the problem in your code is here:



          switch (povezava) {
          case "SSL":
          props.put("mail.smtp.socketFactory.port", "port");


          You don't insert a port variable here...



          If it's not working afterwards you could try to remove the "socketFactory" related properties, I think you don't need them.



          Instead you could add:



          props.put("mail.smtp.ssl.enable", "true");





          share|improve this answer























          • Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

            – Stu076
            Mar 8 at 6:03










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55042869%2fjavax-mail-does-not-want-to-send-my-mail-from-my-web-application-but-it-send-mai%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          First, fix all these common JavaMail mistakes.



          If you can connect to one remote server but not another remote server, your configuration for that server is wrong, or you have a firewall that's preventing connection. The JavaMail FAQ has tips for debugging connection problems.






          share|improve this answer























          • Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

            – Stu076
            Mar 8 at 6:09











          • Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

            – Stu076
            Mar 8 at 7:44






          • 1





            You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

            – Bill Shannon
            Mar 8 at 22:40















          2














          First, fix all these common JavaMail mistakes.



          If you can connect to one remote server but not another remote server, your configuration for that server is wrong, or you have a firewall that's preventing connection. The JavaMail FAQ has tips for debugging connection problems.






          share|improve this answer























          • Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

            – Stu076
            Mar 8 at 6:09











          • Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

            – Stu076
            Mar 8 at 7:44






          • 1





            You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

            – Bill Shannon
            Mar 8 at 22:40













          2












          2








          2







          First, fix all these common JavaMail mistakes.



          If you can connect to one remote server but not another remote server, your configuration for that server is wrong, or you have a firewall that's preventing connection. The JavaMail FAQ has tips for debugging connection problems.






          share|improve this answer













          First, fix all these common JavaMail mistakes.



          If you can connect to one remote server but not another remote server, your configuration for that server is wrong, or you have a firewall that's preventing connection. The JavaMail FAQ has tips for debugging connection problems.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 7 at 18:36









          Bill ShannonBill Shannon

          24.1k53134




          24.1k53134












          • Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

            – Stu076
            Mar 8 at 6:09











          • Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

            – Stu076
            Mar 8 at 7:44






          • 1





            You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

            – Bill Shannon
            Mar 8 at 22:40

















          • Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

            – Stu076
            Mar 8 at 6:09











          • Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

            – Stu076
            Mar 8 at 7:44






          • 1





            You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

            – Bill Shannon
            Mar 8 at 22:40
















          Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

          – Stu076
          Mar 8 at 6:09





          Thank you Bill, I have changed that and now I get the next error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

          – Stu076
          Mar 8 at 6:09













          Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

          – Stu076
          Mar 8 at 7:44





          Thank you very much Bill, I fugured it out also I posted working code in EDIT. If you have any more suggestions to make my code better I would greatly apreciate it.

          – Stu076
          Mar 8 at 7:44




          1




          1





          You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

          – Bill Shannon
          Mar 8 at 22:40





          You could merge the two try/catch blocks into one try with two catches. You're creating a Transport object but then using the static send method that ignores the Transport object (read the common mistakes again), which is then never closed. And you're creating a multipart/related message, but there's only one body part with no "related" body parts like images. You can simplify it further by getting rid of the Multipart and just setting the text/html content as the content of the MimeMessage.

          – Bill Shannon
          Mar 8 at 22:40













          2














          A quick guess is that the problem in your code is here:



          switch (povezava) {
          case "SSL":
          props.put("mail.smtp.socketFactory.port", "port");


          You don't insert a port variable here...



          If it's not working afterwards you could try to remove the "socketFactory" related properties, I think you don't need them.



          Instead you could add:



          props.put("mail.smtp.ssl.enable", "true");





          share|improve this answer























          • Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

            – Stu076
            Mar 8 at 6:03















          2














          A quick guess is that the problem in your code is here:



          switch (povezava) {
          case "SSL":
          props.put("mail.smtp.socketFactory.port", "port");


          You don't insert a port variable here...



          If it's not working afterwards you could try to remove the "socketFactory" related properties, I think you don't need them.



          Instead you could add:



          props.put("mail.smtp.ssl.enable", "true");





          share|improve this answer























          • Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

            – Stu076
            Mar 8 at 6:03













          2












          2








          2







          A quick guess is that the problem in your code is here:



          switch (povezava) {
          case "SSL":
          props.put("mail.smtp.socketFactory.port", "port");


          You don't insert a port variable here...



          If it's not working afterwards you could try to remove the "socketFactory" related properties, I think you don't need them.



          Instead you could add:



          props.put("mail.smtp.ssl.enable", "true");





          share|improve this answer













          A quick guess is that the problem in your code is here:



          switch (povezava) {
          case "SSL":
          props.put("mail.smtp.socketFactory.port", "port");


          You don't insert a port variable here...



          If it's not working afterwards you could try to remove the "socketFactory" related properties, I think you don't need them.



          Instead you could add:



          props.put("mail.smtp.ssl.enable", "true");






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 7 at 16:11









          unwichtichunwichtich

          11.8k23955




          11.8k23955












          • Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

            – Stu076
            Mar 8 at 6:03

















          • Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

            – Stu076
            Mar 8 at 6:03
















          Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

          – Stu076
          Mar 8 at 6:03





          Oops that was my mistake. The second one does not work for me because i get an error (Couldn't find the path speciefied to a valid certificate). I tried to debug that in the past by downloadning the root certificate of our server and put it into the truststore of java, but that didn't change anything.

          – Stu076
          Mar 8 at 6:03

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55042869%2fjavax-mail-does-not-want-to-send-my-mail-from-my-web-application-but-it-send-mai%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Save data to MySQL database using ExtJS and PHP [closed]2019 Community Moderator ElectionHow can I prevent SQL injection in PHP?Which MySQL data type to use for storing boolean valuesPHP: Delete an element from an arrayHow do I connect to a MySQL Database in Python?Should I use the datetime or timestamp data type in MySQL?How to get a list of MySQL user accountsHow Do You Parse and Process HTML/XML in PHP?Reference — What does this symbol mean in PHP?How does PHP 'foreach' actually work?Why shouldn't I use mysql_* functions in PHP?

          Compiling GNU Global with universal-ctags support Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Tags for Emacs: Relationship between etags, ebrowse, cscope, GNU Global and exuberant ctagsVim and Ctags tips and trickscscope or ctags why choose one over the other?scons and ctagsctags cannot open option file “.ctags”Adding tag scopes in universal-ctagsShould I use Universal-ctags?Universal ctags on WindowsHow do I install GNU Global with universal ctags support using Homebrew?Universal ctags with emacsHow to highlight ctags generated by Universal Ctags in Vim?

          Add ONERROR event to image from jsp tldHow to add an image to a JPanel?Saving image from PHP URLHTML img scalingCheck if an image is loaded (no errors) with jQueryHow to force an <img> to take up width, even if the image is not loadedHow do I populate hidden form field with a value set in Spring ControllerStyling Raw elements Generated from JSP tagds with Jquery MobileLimit resizing of images with explicitly set width and height attributeserror TLD use in a jsp fileJsp tld files cannot be resolved