2016-09-25 53 views
2

私はメールサーバからメッセージを読むためにimapを使います。私はメッセージを読むとき、メールサーバからメッセージを削除したい。 javaMailライブラリを使用し、deleteフラグをtrueに設定すると、Webパネルからメッセージが表示されませんが、メッセージの数が取得されると、メッセージの数は変更されません。 私のメールサーバーはZimbraです。javamailとimapでメッセージを永久に削除するには

int count = inbox.getMessageCount();//for example count=100 
inbox[i].setFlag(Flags.Flag.DELETED, true); 
count = inbox.getMessageCount();// count=100 

答えて

2

実際にフォルダから削除されるようにメッセージを削除した後、メッセージを削除する必要があります。その間、彼らはちょうど\Deletedフラグで座り、ほとんどのIMAPクライアントはそれらを隠します。

コールエージング(JavaDoc)はinbox.expunge()と同じくらい簡単です。これにより、削除済みとマークされたメッセージ、または別のセッションで削除済みとマークされたメッセージが削除され、他のすべてのメッセージの既存のメッセージシーケンス番号の番号が変更されます。

サーバーでUIDPLUSがサポートされており、より多くの制御が必要な場合は、IMAPFolder.expunge()がDELETEDメッセージの特定のリストを削除します。

0
if (inbox.isOpen()) {  
    Message[] messages = inbox.getMessages(); 
for (int i = 0; i < messages.length; i++) { 
    System.out.println(messages[i]); 
    messages[i].setFlag(Flags.Flag.DELETED, true); 
} 
if (inbox.isOpen()) { 
    inbox.expunge(); 
    } 
} 

おかげ@Max

+0

は、誰かに感謝を与えるための最良の方法は、最大投票とその答えを受け入れることです。 – Max

関連する問題