2011-06-21 3 views
4

私は、Javaのデフォルトのpop3実装を使用していて、実際のフラグの状態を読み込むのに問題があります。'seen'フラグを取得しても動作しないようです。

ここで(省略)コードです:

Store store = null; 
Folder folder = null; 
try 
{ 
    Session mailSession = Session.getInstance(new Properties(), null); 
    store = mailSession.getStore("pop3"); 
    store.connect(host, addr, pwd); 
    folder = store.getFolder("INBOX"); 
    folder.open(Folder.READ_WRITE); 

    for (Message msg : folder.getMessages()) 
    { 
     if (msg.isSet(Flag.SEEN)) 
      continue; 

     LOG.debug("processing email titled '" + msg.getSubject() 
       + "' from '" + msg.getFrom()[0] + "'"); 

     ... do some stuff 

     msg.setFlag(Flag.SEEN, true); 
    } 
} 
finally 
{ 
     if (folder != null) 
      folder.close(true); 
     if (store != null) 
      store.close(); 
} 

問題がmsg.isSet(Flag.SEEN)への呼び出しがあっても、常に、falseを返しますので、上記のコードが実行されるたびに、同じメッセージ(それらのすべて)が処理されていることであるが、私は前の反復でそれをtrueに設定しましたが。

ウェブメールクライアントは、フラグが設定されていることを反映しています(タイトルは太字から通常のフォントに変更されます)。

誰かが間違っていることを知っていますか?

ありがとう、p。

答えて

4

さらに、pop3はこれらのフラグの設定/取得をサポートしておらず、メッセージの削除のみをサポートしています。

pop3はフラグ設定をサポートしているようですが(フラグはウェブメールプログラムで正常に設定されているのがわかりますが)、その後フラグ状態を読み取ることができませんでした。

ありがたいことに私のメールサーバーは、すべてを期待通りに行うimapをサポートしています。コードをmailSession.getStore("pop3")から​​3210に変更するだけでした。

関連する問題