- PR -

JavaMailの受信処理について

1
投稿者投稿内容
こぶ
会議室デビュー日: 2006/11/14
投稿数: 11
投稿日時: 2006-12-01 12:02
こんにちは

「getMessages」を使用してメールを取得しているのですが
この時に「Message[]」へ格納されるメールの順番は何になるのですか?

また、受信メールを削除(setFlag)せず再度「getMessages」にて
受信メールを確認すると前回の順番と入れ替わっています。
(途中で受信したメールが間に割り込んでいます。)
さらに、「getMessageNumber」にて取得された番号と受信メールの割付も
受信のたびに入れ替わってしまってます。

当方のしたい事は
受信内容の一覧をユーザに表示(ブラウザ)し、その後ユーザの操作により
該当メールを削除したいと思っているのですが受信メールとその番号が
固定されていないので困っています。

何か特定する方法があるのでしたら教えてください。
(受信日付/件名でチェックすべきなのでしょうか?)

メールサーバはJamesを使用しております。

よろしくお願いします。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-12-01 12:50
MessageNumberは単にサーバ側が返してきた一覧のシーケンスで、順番はサーバ側依存でしょう。
messageIdを使うとか、セッションを保持したままでそれぞれのメッセージになんらか一意のIDを振るとか、
そういったことをしないといけないんじゃないでしょうか。
日付や件名では、まったく同じものが存在する可能性も排除できないです。
IMAPであればUIDが使えますが。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2006-12-01 13:40
JavaMailは全然わからないのですが、JavaMail特有の実装というわけではないと思いますので(汗

普通のPOPクライアントでもUIDLコマンドで取得したIDと保存しておいた前回処理時のIDをチェックして未処理かどうかを判断しているハズです。

#で、新規の(=未処理のIDが付いた)メール番号だけ取得する。

メール番号は残っているメールについてメールサーバが勝手に割り当てます。普通は1からの連番ですが、サーバの実装に依存するので決め打ちは出来ません。

(蛇足)
メーラで「サーバにn日間残す」ような設定があるものはIDと取得日時を関連付けて保存してます。
1

スキルアップ/キャリアアップ(JOB@IT)