Подтвердить что ты не робот

Удаление электронной почты на сервере с помощью javax.mail

Я получаю письма с сервера с использованием протокола IMAP, как описано здесь. Это работает очень хорошо, и я могу хранить электронные письма и вложения на диске.

Вопрос: У меня есть возможность удалять файлы с сервера, чтобы они больше не были доступны, когда клиент пытается получить все электронные письма? Если да, пожалуйста, скажите мне, как.

4b9b3361

Ответ 1

Вы должны сделать это с помощью стандартных API.

Сначала вам нужно получить ссылку на Message (или сообщения), которые вы хотите удалить, - если вы успешно их читаете, вы уже можете это сделать. Теперь нет явной операции delete(), но вы можете пометить сообщение как удаленное так:

message.setFlag(Flags.Flag.DELETED, true);

Отметьте это сообщение как удаленное (что обычно делает операция удаления в клиентском IMAP-клиенте). Чтобы принудительно удалить удаленные сообщения, когда вы закончите с Folder (s), в которых они находятся, вызовите

folder.close(true);

где истинный флаг указывает серверу на удаление всех удаленных сообщений.

И вуаля! Клиент не должен больше видеть эти сообщения, когда он подключается к серверу с любым клиентом IMAP.

EDIT:

Не забудьте открыть папку в режиме READ_WRITE, иначе сообщения на самом деле не будут удалены с сервера.

folder.open(Folder.READ_WRITE);

Смотрите: http://java.sun.com/developer/onlineTraining/JavaMail/contents.html#JavaMailDeleting