2014-11-14 1 views
0

Я написал код для отправки электронной почты из java swing с использованием javamail api.Устранить возникновение исключения при отправке электронной почты с помощью javamail api из java swing

Properties props = new Properties(); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable", "true"); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.port", "587"); 

    Session session = Session.getInstance(props,new javax.mail.Authenticator() { 
      @Override 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
     }); 

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setText("Hello"); 

     MimeBodyPart messageBodyPart; 
     Multipart multipart = new MimeMultipart(); 
        messageBodyPart = new MimeBodyPart(); 

       multipart.addBodyPart(messageBodyPart); 
        message.setContent(multipart); 

     Transport.send(message); 

     System.out.println("sent mail"); 

    } catch (Exception e) { 
     //System.out.println(e); 
     e.printStackTrace(); 
    } 

     System.out.println("hello!!!!!!!!"); 
} 

Но оно показывает исключение как javax.mail.MessagingException: Не удалось преобразовать сокет в TLS;

Трассировка стека выглядит следующим образом

javax.mail.MessagingException: Could not convert socket to TLS; 
    nested exception is: 
    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 

    at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1907) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:666) 
    at javax.mail.Service.connect(Service.java:317) 
    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 workregistration.Send.main(Send.java:59) 
Caused by: 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 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1902) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1338) 
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:154) 
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1032) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1328) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:549) 
    at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:486) 
    at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1902) 
    ... 7 more 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385) 
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) 
    at sun.security.validator.Validator.validate(Validator.java:260) 
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1320) 
    ... 17 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) 
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) 
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380) 
+0

Как это связано с качелями? – StanislavL

+0

дубликат http://stackoverflow.com/questions/12743846/unable-to-send-an-email-using-smtp-getting-javax-mail-messagingexception-could – jmn

+0

Извините, это моя ошибка –

ответ

1

сделать это

props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); 

, если это не удается проверить настройки брандмауэра

+0

Генерирует исключение: javax.mail.MessagingException: Не удалось подключиться к узлу SMTP: localhost, порт: 587, ответ: 421 –

0

Пожалуйста, проверьте брандмауэр и отключить антивирусную экран и проверьте еще раз ...

Смежные вопросы