0

imapすべてのメールのインデックスを作成するために、javamail API を使用して gmail ボックスを読み込んでいます。デフォルトのフォルダー以外のすべてのフォルダーを読み取りたい。以下のコード セグメントは、gmail のデフォルト フォルダのみを提供します。

javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
for (javax.mail.Folder fold : folders) {
    if ((fold.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
       System.out.println(fold.getFullName() + ": " + fold.getMessageCount());
    }
}

上記のコードを使用すると表示されないラベルがいくつかあります。gmail のデフォルト フォルダ以外のすべてのユーザー定義ラベルを取得する方法はありますか。また、メールに複数のラベルがあり、そのメールのラベルを取得できる方法はありますか。これは、同じメールが 2 回読まれるのを避けるためです。メールが としてマークされている場合important、それはINBOXALL MAILSおよびIMPORTANTフォルダーに入るからです。したがって、上記のコードによれば、INBOXメールが最初に読み取られます。そのフォルダー内のメールを既に読んでいる場合は、他のフォルダーで同じメールを読むことを避け、そのようなラベルを取得しINBOXたいIMPORTANTそのメールが既読または未読としてマークされているかどうかに関係なく。私は javamail と imap の両方が初めてで、それを機能させる方法を理解できません。可能な方法があればご協力お願いします

4

1 に答える 1

0

それはうまくいくはずです。セッションのデバッグをオンにして、サーバーが正確に何を返しているかを確認してください。また、list("%") を使用して、フォルダー階層の単一レベルのみを一覧表示してみてください。

于 2013-01-16T20:56:43.073 に答える