ハマログ

株式会社イーツー・インフォの社員ブログ

Gmailの削除済みメールをPOPで取得する

プログラムからGmailのメールボックスにあるメールを取得する場合、以下のようなコードを書くと、過去に取得していないメールをまとめて取得することができます。
(例は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には、通常モードと最新モードの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:をつけることで、取込済みメールを再取り込みすることができるようになりました。
GmailJavaJavaMailPOP

  kaneko tomo   2018年1月27日


関連記事

GCEからCloud SQLに接続するための設定

Google Compute EngineからCloud SQL(MySQL)に…

StreetView Image APIで、画像がないときに代替画像を表示する方法

Street View Image APIを利用すると、JavaScriptのコ…

Chromeに名前が表示されていたので変更しました

いつからか、Chromeにログインしていると右上に名前が表示されるようになりまし…


← 前の投稿

次の投稿 →