Использование почты Java Pop3 не может удалить электронную почту из Gmail - PullRequest
1 голос
/ 10 ноября 2011

У меня есть Java-программа, которая работает как POP3-клиент, используя javax.mail.Я могу составить список и получить содержимое почтового ящика Gmail без проблем.Тем не менее, я не могу удалить электронные письма.Вот код (важные части):

POP3Store sto=... another method creates and connects the POP3Store
Folder ibx=sto.getFolder("INBOX");
ibx.open(Folder.READ_WRITE);

Message[] msgarr=ibx.getMessages();

for(int mi=0; mi<msgarr.length; mi++) {
    ...do stuff with the message
    msgarr[mi].setFlag(Flags.Flag.DELETED, true);
    }
ibx.close(true); //folder.close(true) indicates to expunge the folder
sto.close();

После запуска и проверки обработки каждого сообщения я захожу в Gmail, и электронные письма все еще там, и даже отображаются как непрочитанные.Если я перезапущу Java-клиент, он увидит и обработает те же электронные письма.

Этот же код успешно удаляет электронные письма с сервера обмена.

Как я могу получить Gmail для удаления электронных писем?

Ответы [ 3 ]

6 голосов
/ 10 ноября 2011

Gmail специально обрабатывает удаление POP.

Вы можете настроить действия Gmail при удалении сообщения через POP в настройках Gmail на вкладке Forwarding and POP / IMAP.

1 голос
/ 14 декабря 2011

Как говорит SLaks, Gmail - это особый случай, когда он имеет свои собственные настройки для управления удалением, которые переопределяют все, что хочет сделать клиент.

Его можно редактировать в Forwarding and POP / IMAP

Однако я хочу добавить, что для того, чтобы сообщение считалось "загруженным" Gmail, вам необходимо получить содержимое каждого сообщения, а в случае составных типов сообщений - содержимое каждой части в этом сообщении.

Вот пример кода, который я использую для принудительного удаления нежелательных сообщений из Gmail:

// Grab the content to get the email off the server
// folder is of type javax.mail.Folder and is already in the correct state to get messages from the mail store (Gmail)
Message msg = folder.getMessage(1);
Multipart multipart = (Multipart) msg.getContent();
int partcount = multipart.getCount();
for (int count = 0; count < partcount; count++) {
    multipart.getBodyPart(count);
}
0 голосов
/ 03 июля 2013

Если вы добавите "недавний:" в своем имени пользователя pop3, вы решите.Пример: недавний: yourusername@gmail.com

Это подключается к Gmail, используя Недавний режим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...