Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1

后端 未结 5 1137
一个人的身影
一个人的身影 2020-12-03 17:03

while sending mail I am getting this error

java.lang.RuntimeException: javax.mail.SendFailedException: Sending failed; nested exception is: cla

相关标签:
5条回答
  • 2020-12-03 17:27

    I have been experiencing this issue when debugging using NetBeans, even executing the actual jar file. Antivirus would block sending email. You should temporarily disable your antivirus during debugging or exclude NetBeans and the actual jar file from being scanned. In my case, I'm using Avast.

    See this link on how to Exclude : How to Add File/Website Exception into avast! Antivirus 2014

    It works for me.

    0 讨论(0)
  • 2020-12-03 17:31

    You need to tell it that you are using SSL:

    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    

    In case you miss anything, here is working code:

    String  d_email = "address@gmail.com",
                d_uname = "Name",
                d_password = "urpassword",
                d_host = "smtp.gmail.com",
                d_port  = "465",
                m_to = "toAddress@gmail.com",
                m_subject = "Indoors Readable File: " + params[0].getName(),
                m_text = "This message is from Indoor Positioning App. Required file(s) are attached.";
        Properties props = new Properties();
        props.put("mail.smtp.user", d_email);
        props.put("mail.smtp.host", d_host);
        props.put("mail.smtp.port", d_port);
        props.put("mail.smtp.starttls.enable","true");
        props.put("mail.smtp.debug", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.socketFactory.port", d_port);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
    
        SMTPAuthenticator auth = new SMTPAuthenticator();
        Session session = Session.getInstance(props, auth);
        session.setDebug(true);
    
        MimeMessage msg = new MimeMessage(session);
        try {
            msg.setSubject(m_subject);
            msg.setFrom(new InternetAddress(d_email));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
    
    Transport transport = session.getTransport("smtps");
                transport.connect(d_host, Integer.valueOf(d_port), d_uname, d_password);
                transport.sendMessage(msg, msg.getAllRecipients());
                transport.close();
    
            } catch (AddressException e) {
                e.printStackTrace();
                return false;
            } catch (MessagingException e) {
                e.printStackTrace();
                return false;
            }
    
    0 讨论(0)
  • 2020-12-03 17:40

    In my case it was Avast Antivirus interfering with the connection. Actions to disable this feature: Avast -> Settings-> Components -> Mail Shield (Customize) -> SSL scanning -> uncheck "Scan SSL connections".

    0 讨论(0)
  • 2020-12-03 17:46

    What i did was i commented out the

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

    Because apparently for G-mail you did not need it. Then if you haven't already done this you need to create an app password in G-mail for your program. I did that and it worked perfectly. Here this link will show you how: https://support.google.com/accounts/answer/185833.

    0 讨论(0)
  • 2020-12-03 17:46

    Port 465 is for "smtp over SSL".

    http://javamail.kenai.com/nonav/javadocs/com/sun/mail/smtp/package-summary.html

    [...] For example, use
        props.put("mail.smtp.port", "888");
    to set the mail.smtp.port property, which is of type int.
    
    Note that if you're using the "smtps" protocol to access SMTP over SSL, 
    all the properties would be named "mail.smtps.*"
    
    0 讨论(0)
提交回复
热议问题