2016-07-14 55 views
0

JavaMail API 1.5.5を使用してGmailサーバーから認証済みのメールを送信しようとしています。JavaMail - 認証されたoauth2 smtpメールを送信

javaMailAPI 1.5.5 siteのチュートリアルに続き、this google toolを使用しましたが、メールを送信できませんでした。ここで

は私がやったことです:

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

} 

私は、次のexecption得た:私はまた、SMTPするプロパティの名前でIMAPを切り替えるしようとしましたが、その場合には

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

をプログラムが停止しました

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

どうすれば解決できますか?私はオンラインで検索しましたが、見つけられませんでした。

編集:

ない正確に示唆したように同じ質問。 2016年にリリースされたJavaMailAPI 1.5.5でoauth2認証を使用しています。接続方法が異なります。古いものは動作しません。

認証に問題があるとのことです。また、私はユーザー名とパスワードを使用していませんが、ユーザー名とアクセストークンはGoogleによって与えられます。

+0

JavaメールAPIを使用してメールを送信中に[MailConnectException]が重複している可能性があります(http://stackoverflow.com/questions/20766044/mailconnectexception-while-sending-mail-using-java-mail-api) – DaImTo

+0

@DalmTo正確ではありません。 2016年にリリースされたJavaMailAPI 1.5.5でoauth2認証を使用しています。接続方法が異なります。古いものは動作しません。認証に問題があるとのことです。 –

+0

私はまた、ユーザー名とパスワードの代わりにユーザー名とアクセストークンに接続します。 –

答えて

1

JavaMail APIの基本的な理解が不足しています。ストアはメッセージを読み取るためのもので、トランスポートはメッセージを送信するためのものです。 Gmail are in the JavaMail FAQの基本的な例そのコードを試しても問題が解決しない場合は、使用しているコードで質問を更新し、JavaMail debug outputを投稿してください。

関連する問題