7

最近、Gmail アカウントに 2 段階認証プロセスを設定し、Java Mail API を使用して Gmail アカウントに接続しようとしましたが、接続されませんでした。

私のコード:

Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps");
    try {
        Session session = Session.getDefaultInstance(props, null);
        Store store = session.getStore("imaps");
        store.connect("imap.gmail.com", "my_account@gmail.com", "password");
        System.out.println(store);

        Folder inbox = store.getFolder("Inbox");
        inbox.open(Folder.READ_ONLY);
        Message messages[] = inbox.getMessages();
        for (Message message : messages) {
            System.out.println(message);
        }
    } catch (NoSuchProviderException e) {
        e.printStackTrace();
        System.exit(1);
    } catch (MessagingException e) {
        e.printStackTrace();
        System.exit(2);
    }

そして、logcatから得たもの:

javax.mail.AuthenticationFailedException: [ALERT] Application-specific password required: http://support.google.com/accounts/bin/answer.py?answer=185833 (Failure)
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:660)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)

この問題を克服する方法を教えてください。

前もって感謝します。

4

1 に答える 1

8

Gmail アカウントの 2 段階認証を有効にしたら、Gmail の資格情報を使用して以下のリンクにログインし、アプリケーション固有のパスワード (ASP) を生成します。生成されたパスワードをコードで使用できます。通常のパスワードの代わりに ASP を追加するだけです。それはうまくいくはずです。

https://accounts.google.com/IssuedAuthSubTokens?hide_authsub=1

更新: 2018 年 7 月 30 日

このリンクを開いて手動で gmail の ID とパスワードを使用して一度ログインすると、次のようなページが表示されます。最初のドロップダウンで「メール」オプションを選択します

ここに画像の説明を入力

2 番目のドロップダウンで、要件に基づいてプラットフォームを選択します。「Windows コンピューター」または「Mac」と言います。

ここに画像の説明を入力

次に、生成ボタンをクリックすると、次の画面に 16 個のアルファベットのコードが表示されます。

これを Java メール プログラムでパスワードとして使用します。

store.connect("imap.gmail.com", "gmail id used in the previous step", "16 alphabets code");

于 2013-05-17T04:32:12.807 に答える