Поэтому я столкнулся с действительно раздражающей проблемой на моей работе. У нас есть поддержка авто-электронных писем И они отправляют мне много писем.
Что большинство людей сделают в этой ситуации? Сделайте правило, чтобы положить его в другую папку. Итак, теперь у меня 300 000 000 писем их И я не могу ввести в папку, Outlook сокрушает … что нам делать?
Давайте напишем скрипт, который удаляет ваши электронные письма.
Для этого мы будем использовать библиотеку imaplib.
import imaplib
Мы также будем использовать datetime так:
import datetime
Далее нам нужен новый класс ..
class EmailCleaner: def deleteEmail(self): imap_host = 'imap-mail.outlook.com' # for gmail please use: 'imap.gmail.com' mail = imaplib.IMAP4_SSL(imap_host) mail.login('your email', 'your password')
Мы создали новый класс под названием «EmailCleaner», внутри мы создаем новый метод под названием «DelaeMail». Следующие 3 строки определяют хост (Outlook в моем примере), открыть SSL-соединение и заготовку входа в систему на свой адрес электронной почты.
После того, как мы вошли в систему, давайте выделим необходимую папку и начните работать на нем. Для этого нам нужно получить имя папки и сколько дней (мой по умолчанию 50), мы хотим пойти бросить.
class EmailCleaner: def deleteEmail(self, folderName, daysBack = 50): imap_host = 'imap-mail.outlook.com' mail = imaplib.IMAP4_SSL(imap_host) mail.login('your email', 'your password') mail.select(mailbox=folderName, readonly=False) for i in range(0, daysBack): date = (datetime.date.today() - datetime.timedelta(i)).strftime("%d-%b-%Y") result, data = mail.search(None, '(SENTSINCE {0})'.format(date))
Мы только что выбрали запрошенную папку по электронной почте. Выберите и поставить, потому что мы хотим удалить ее.
По умолчанию мы не можем получить все электронное письмо, но только в партиях (~ 1000), поэтому я создал петлю в дни, и он удалит электронные письма в зависимости от дня. Затем я искал запрошенные электронные письма по дате – «Sentsince». Для других запросов вы можете прочитать здесь: Rfc.
for num in data[0].split(): mail.store(num, '+FLAGS', r'(\Deleted)') print(f'adding email {num} to remove list...')
Я создал вложенную петлю и пометить каждое электронное письмо с удаленным флагом.
Таким образом, мы сделали логин, выбрали папку и запускаем для цикла в этой папке, получите электронные письма по дате и отметьте их с удаленным флагом, теперь пришло время Удалить электронные письма Отказ
Для удаления электронных писем мы будем использовать это:
mail.expunge()
Давайте проверим весь код (добавил некоторые отпечатки) …
def deleteEmail(self, folderName, daysBack = 50): mail = imaplib.IMAP4_SSL(imap_host) mail.login('your email', 'your password') print("Login success") mail.select(mailbox=folderName, readonly=False) for i in range(0, daysBack): date = (datetime.date.today() - datetime.timedelta(i)).strftime("%d-%b-%Y") result, data = mail.search(None, '(SENTSINCE {0})'.format(date)) for num in data[0].split(): mail.store(num, '+FLAGS', r'(\Deleted)') #change flag to delete print(f'adding email {num} to remove list...') mail.expunge() # delete the emails print(f'Emails back from day: {i} removed.') # close connection and logout mail.close() mail.logout()
Это почти готово! Теперь давайте добавим попробуйте \ Cast теперь обрабатывать исключения.
def deleteEmail(self, folderName, daysBack = 50): try: mail = imaplib.IMAP4_SSL(imap_host) mail.login('your email', 'your password') print("Login success") mail.select(mailbox=folderName, readonly=False) for i in range(0, daysBack): date = (datetime.date.today() - datetime.timedelta(i)).strftime("%d-%b-%Y") result, data = mail.search(None, '(SENTSINCE {0})'.format(date)) for num in data[0].split(): mail.store(num, '+FLAGS', r'(\Deleted)') print(f'adding email {num} to remove list...') mail.expunge() print(f'Emails back from day: {i} removed.') mail.close() mail.logout() except Exception as e: raise Exception(f'Unable to delete emails, e.')
Если вы хотите запустить его через консоль, вы можете добавить консольный интерфейс с огнем. Вы можете изменить мой пост, как реализовать это: Автоматически генерировать интерфейсы командной строки
* Наслаждаться:) *
Оригинал: “https://dev.to/roybs2/automate-your-computer-remove-emails-1lb1”