2016-09-25 7 views
2

Я использую imap для чтения сообщения с почтового сервера. Я хочу, когда я прочитал сообщение, сообщение удалит с почтового сервера. Я использую библиотеку javaMail и устанавливаю флаг delete в true, и я не вижу сообщение с веб-панели, но когда я получаю счет сообщения, количество сообщений не изменяется. мой почтовый сервер - 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