Gmailの削除済みメールをPOPで取得する
プログラムからGmailのメールボックスにあるメールを取得する場合、以下のようなコードを書くと、過去に取得していないメールをまとめて取得することができます。
(例はJava&JavaMail)
(例はJava&JavaMail)
pop3Props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false"); pop3Props.setProperty("mail.pop3.port", Integer.toString(port)); pop3Props.setProperty("mail.pop3.socketFactory.port", Integer.toString(port)); URLName url = new URLName("pop3", host, port, "", username, password); Session session = Session.getInstance(pop3Props, null); Store store = new POP3SSLStore(session, url); store.connect(); Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE); Message[] messages = folder.getMessages();
今回、過去に取り込んだメールデータをプログラム側で誤って削除してしまい、再取り込みを実施する必要がありました。
そこで、ブラウザでGmailを開き、メールボックスのメールを未読にしてプログラムを実行しましたが、メールを取り込むことができませんでした。
そこで、ブラウザでGmailを開き、メールボックスのメールを未読にしてプログラムを実行しましたが、メールを取り込むことができませんでした。
Gmailの仕様を確認したところ、Gmailには、通常モードと最新モードの2通りの動作があることがわかりました。
通常モード
POP の通常モードでは、ダウンロードされていない、(略)メッセージのリストが Gmail から提供されます。
最新モード
POP の最新モードでは、過去 30 日間の Gmail のすべてのメール([迷惑メール] と [ゴミ箱] を除く)が表示されます。
https://support.google.com/a/answer/6089246?hl=ja
取込済みで削除済みではないメールを再取得する場合、メールを最新モードで取得する必要があるようです。
続いてGmailを最新モードで取得する方法を調べてみます。
メールのダウンロードに関する問題が解決しない場合は、「最新モード」をお試しください。
メール クライアントの POP 設定ページで、[メールアドレス] または [ユーザー名] を見つけます。 メールアドレスの先頭に「recent:」を追加します
(例: recent:example@gmail.com)。
https://support.google.com/mail/answer/7104828
ということで、POP3のアカウント名にrecent:をつけることで、取込済みメールを再取り込みすることができるようになりました。