2017-03-06 2 views
0

Ich folgte this Tutorial für E-Mails mit dem Javamail-API zu senden, aber es zeigt mir diese Fehlermeldung, wenn ich versuche, den Code auszuführen:Java Mail API error

Exception in thread "main" java.lang.RuntimeException: 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 SendEmail.main(SendEmail.java:64) 

ich die javax.mail.jar Datei in der Klasse Pfad und ich habe den Code überprüft, es funktioniert immer noch nicht.

Dies ist der Code:

import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendEmail { 
public static void main(String[] args) { 
    // Recipient's email ID needs to be mentioned. 
    String to = "[email protected]"; 

    // Sender's email ID needs to be mentioned 
    String from = "[email protected]"; 
    final String username = "[email protected]";//change accordingly 
    final String password = "password";//change accordingly 

    // Assuming you are sending email through relay.jangosmtp.net 
    String host = "smtp.gmail.com"; 

    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"); 

    // Get the Session object. 
    Session session = Session.getInstance(props, 
    new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
    } 
    }); 

    try { 
    // Create a default MimeMessage object. 
    Message message = new MimeMessage(session); 

    // Set From: header field of the header. 
    message.setFrom(new InternetAddress(from)); 

    // Set To: header field of the header. 
    message.setRecipients(Message.RecipientType.TO, 
      InternetAddress.parse(to)); 

    // Set Subject: header field 
    message.setSubject("Testing Subject"); 

    // Now set the actual message 
    message.setText("Hello, this is sample for to check send " + 
    "email using JavaMailAPI "); 

    // Send message 
    Transport.send(message); 

    System.out.println("Sent message successfully...."); 

    } catch (MessagingException e) { 
    throw new RuntimeException(e); 
    } 

} }

+0

es funktioniert gut mit mir ... –

+0

Haben Sie die Ausnahmemeldung Google? https://www.google.com/search?q=PKIX+path+building+failed:+sun.security.provider.certpath.SunCertPathBuilderException:+unfähig +findet +validen+Zertifikatspfad + zu + angefordert + target & sa = G & gbv = 1 & sei = CNC9WLTuNJ64jAP55ragAw – Robert

+0

Ja, nichts half –

Antwort

0

diese hinzufügen und erneut versuchen.

+0

Funktioniert nicht :(Zeigt einen anderen Fehler Ausnahme im Thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 534-5.7.14

+0

Das Problem bezieht sich auf Zertifikate.Versuchen Sie dies http://stackoverflow.com/questions/9619030/resolving-javax-net-ssl-sslhandshakeexception-sun- security-validator-validatore wenn es hilft – Maverick

+0

Wirklich, es hat funktioniert –