2016-07-14 24 views
0

Ich versuche, eine authentifizierte E-Mail über Gmail-Server mit JavaMail API 1.5.5 zu senden.JavaMail - Authentifizierte OAuth2-SMTP-Mail senden

Ich folgte dem Tutorial in javaMailAPI 1.5.5 site und verwendet this google tool, aber es war nicht erfolgreich, eine Mail zu senden. Hier

ist das, was ich getan habe:

private static void sendEmail(String _emailBody){ 
    //used oauth2.py in order to retrieve the access token 
    String accessToken = getAccessToken(refresh_token,username,client_id,client_secret); 
    // Setup mail server 
    Properties props = new Properties(); 
    props.put("mail.imap.ssl.enable", "true"); // required for Gmail 
    props.put("mail.imap.auth.mechanisms", "XOAUTH2"); 
    Session session = Session.getInstance(props); 
    Store store = session.getStore("imap"); 
    store.connect("imap.gmail.com", username, accessToken); 
    MimeMessage msg = new MimeMessage(session); 
    msg.setFrom(new InternetAddress(username)); 
    msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(_email)); 
    msg.setSubject("some subject"); 
    msg.setText(_emailBody); 
    Transport.send(msg); 

} 

Ich habe die folgende execption:

com.sun.mail.util.MailConnectException 
Couldn't connect to host, port: localhost, 25; timeout -1 

Ich habe auch versucht die imap in den Eigenschaften Namen zu smtp zu wechseln, aber in diesem Fall ist die Programm wurde fest auf

store.connect("imap.gmail.com", username, accessToken); 

Wie kann ich es lösen? Ich suchte online nach einer Antwort, fand aber keine.

Edit:

nicht genau die gleiche Frage wie vorgeschlagen. Ich benutze oauth2 Authentifizierung auf JavaMailAPI 1.5.5, die im Jahr 2016 veröffentlicht wurde. Die Verbindungsmethode ist anders. Das alte funktioniert nicht.

Es besagt, dass es ein Authentifizierungsproblem gibt. Außerdem benutze ich nicht den Benutzernamen und das Passwort, sondern den Benutzernamen und das Token von Google.

+0

Mögliche Duplikate von [MailConnectException beim Senden von E-Mails mit Java-Mail-API] (http://StackOverflow.com/questions/20766044/mailconnectexception-while-sending-mail-using-java-mail-api) – DaImTo

+0

@Dalmto Nicht genau . Ich benutze oauth2 Authentifizierung auf JavaMailAPI 1.5.5, die im Jahr 2016 veröffentlicht wurde. Die Verbindungsmethode ist anders. Das alte funktioniert nicht. Es besagt, dass ein Authentifizierungsproblem vorliegt. –

+0

Ich verbinde mich auch mit Benutzername und Zugriffstoken statt Benutzername und Passwort. –

Antwort

1

Ihnen fehlt ein grundlegendes Verständnis der JavaMail-API. Speicher dienen zum Lesen von Nachrichten, Transporte dienen zum Senden von Nachrichten. Die grundlegenden Beispiele für Gmail are in the JavaMail FAQ. Versuchen Sie diesen Code, und wenn es immer noch nicht funktioniert, aktualisieren Sie Ihre Frage mit dem Code, den Sie verwenden, und senden Sie die JavaMail debug output.