Удалить почту Gmail без возможности восстановления, используя Python imaplib - PullRequest
0 голосов
/ 04 апреля 2019

Я использую правило Gmail, чтобы пометить определенные электронные письма как «удалить», чтобы пометить для окончательного удаления. С помощью этого скрипта на Python я могу успешно переместить их в корзину Gmail, но не могу удалить их навсегда, как только они появятся.

Есть идеи? Я попытался включить / отключить автоматическое удаление в настройках imap Gmail, но ничего не изменилось.

mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)

try:
    rv, data = mail.login(EMAIL_ACCOUNT, EMAIL_PASS)
except imaplib.IMAP4.error as e:
    print "LOGIN FAILED!!! "
    print e
    sys.exit(1)

print rv, data

mail.select("delete")
type, data = mail.search(None, 'ALL')

mail.store("1:*",'+X-GM-LABELS', '\\Trash')
mail.store("1:*", "+FLAGS", '\\Deleted')
mail.expunge()

1 Ответ

1 голос
/ 04 апреля 2019

Подведем итоги:

Эмуляция Gmail папок IMAP означает, что сообщение с множеством меток отображается в виде отдельной копии во многих папках. Некоторые данные сообщений и метаданные совместно используются папками, а другие метаданные - нет.

Установка флажка \Deleted в сообщении удаляет текущую папку / ярлык из сообщения. Если это последний ярлык, это сообщение архивируется и доступно в папке All Mail.

Использование IMAP для перемещения сообщения в папку «Корзина» или «Корзина» (через MOVE или COPY* 1 ) или добавление метки корзины соответствует присвоению ей метки корзины (и ее следует удалить все остальные метки автоматически). Затем он будет сидеть там и очищаться через 30 дней.

Чтобы окончательно удалить сообщение, которое вы удалили, вам нужно select папку «Корзина» или «Корзина» (ее имя зависит от локали, вам может понадобиться list, чтобы найти ее), затем добавить флаг \Deleted, что соответствует постоянному удалению.

В вашем примере вы переместили сообщение в корзину и излишне удалили текущую метку из сообщения. Вам необходимо перейти в папку «Корзина», чтобы удалить ее навсегда.

* 1: Если вы используете UID MOVE или UID COPY, ответ UIDPLUS должен вернуть новый UID в папку «Корзина», которую можно использовать для окончательного удаления элемента.

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

...