LoginSignup
2
3

More than 5 years have passed since last update.

IMAPでメール本文を表示するときの注意

Posted at

IMAPでメールを取得するにはFETCHコマンドを使用しますが、FETCHでメール本文を取得すると、何もしないと未読フラグが解除されてしまいます。未読のまま取得するには、FETCHコマンドのPEEKオプションを追加します。

[失敗例] 1番のメールの本文を取得

tag1 FETCH 1 BODY[TEXT]
...
tag2 FETCH 1 FLAGS
tag2 1 FETCH (FLAGS (\Seen))   <- 既読になってしまう

[修正例] 未読フラグを維持したまま、1番のメールの本文を取得

tag1 FETCH 1 BODY.PEEK[TEXT] <- ".PEEK" を追加
...
tag2 FETCH 1 FLAGS
tag2 1 FETCH (FLAGS ())

javamailの場合は、IMAPMessage#setPeekメソッドを使用します。

Message message = folder.getMessageByUID(uid);
if (message instanceof IMAPMessage) {
    ((IMAPMessage) message).setPeek(true);
}

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3