@bombo

Yandex.360 imap python. Как удалить письмо из всех ящиков сотрудников?

Приветствую всех.
Задача такая:
Как удалить одно конкретное письмо которое лежит во всех корпоративных ящиках?
Проблема заключается в поиске этого самого письма, т.к. оно может лежать не только в 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
Ошибка поиска в папке: ххххх


Извините если что-то непонятно, но я очень старался корректно донести вопрос сообществу :))
  • Вопрос задан
  • 155 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы