Приветствую всех.
Задача такая:
Как удалить одно конкретное письмо которое лежит во всех корпоративных ящиках?
Проблема заключается в поиске этого самого письма, т.к. оно может лежать не только в INBOX, но и в других папках у разных пользователей.
Чего я добился на данный момент:
def delete_emails(username, token, subj):
auth_string = generate_oauth2_string(username, token)
imap_connector = imaplib.IMAP4_SSL("imap.yandex.com", 993)
imap_connector.authenticate('XOAUTH2', lambda x: auth_string)
folders = imap_connector.list() # получаем список папок
for folder in folders[1]: # ходим по папкам и ищем письмо
box = shlex.split(imaputf7decode(folder.decode()))[-1] # decode просто для отладки чтобы кириллица отображалась
try:
imap_connector.select(imaputf7encode(box)) # выбираем папку в ящике
subj = 'SUBJECT "'+subj+'"' # тема письма
status, messages = imap_connector.search("utf-7", subj.encode('utf-7')) # поиск, он и вызывает exception
ic(messages)
print("В папке: "+ box + " найдено сообщение: " + str(messages[0]))
except imaplib.IMAP4.error:
print("Ошибка поиска в папке: " + box)
В итоге в консоле по всем папкам **Ошибка поиска в папке: ХХХ**
Но, если я явно укажу папку в которой нужно искать, то сообщение находит, далее уже удалить без проблем.
Еще странность, в цикле он почему то не ругается на ошибку только в одной папке, но там искомого письма на самом деле нет, оно в другой папке лежит.
Ошибка поиска в папке: хххххххххх
Ошибка поиска в папке: хххххх
ic| messages: [b'']
В папке: <b>XXXXXX</b> найдено сообщение: b'' <-- Здесь нет письма в аккаунте!
Ошибка поиска в папке: хххххх
Ошибка поиска в папке: хххххх
Ошибка поиска в папке: ххххх
Ошибка поиска в папке: ххххх
Ошибка поиска в папке: Archive
Ошибка поиска в папке: Drafts
Ошибка поиска в папке: Drafts|template
Ошибка поиска в папке: INBOX
Ошибка поиска в папке: INBOX|ххххх
Ошибка поиска в папке: INBOX|ххххх
Ошибка поиска в папке: INBOX|ххххх
Ошибка поиска в папке: INBOX|хххххх
Ошибка поиска в папке: INBOX|ххххх
Ошибка поиска в папке: INBOX|qrator <-- Оно здесь!
Ошибка поиска в папке: ххххх
Ошибка поиска в папке: ххххх
Ошибка поиска в папке: Spam
Ошибка поиска в папке: Trash
Ошибка поиска в папке: ххххх
Извините если что-то непонятно, но я очень старался корректно донести вопрос сообществу :))