Почему я получаю «ОШИБКА: ошибка команды FETCH: ПЛОХО» в этом коде Python? - PullRequest
0 голосов
/ 22 мая 2019

Я работаю над кодом на python, который должен искать все адреса электронной почты в csv-файле (они сохранены со своими паролями) для определенной темы. Все работает нормально, но если я добавлю конкретный предмет для поиска, я получу большую проблему.

Это строка:

type, data = mail.search (Нет, '(UNSEEN) (пример TEXT)')

если я удаляю (пример TEXT), это работает, но я хочу искать только электронные письма с этой темой ...

Я нашел код, который ищет электронные письма с определенной темой, но я хочу использовать автоматическое использование данных из файла CSV, и я не решил проблему, чтобы объединить эти функции ..: (

///// START CODE:

import email
import imaplib
import csv
import smtpd
import time




smtp_server = 'imap.arcor.de'
smtp_port = 993



def acccheck():
    with open('pipi.csv') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=';')
        for row in csv_reader:

            readmail(row[0], row[1])
            print(row[0], row[1])


def readmail(username, password):

    try:
        mail = imaplib.IMAP4_SSL(smtp_server)
        mail.login(username, password)

        mail.select('inbox')
        type, data = mail.search(None, '(UNSEEN) (TEXT example)')
        mail_ids = data[0]
        id_list = mail_ids.split()

        for i in reversed(id_list):
            type, data = mail.fetch(i, '(RFC822)')

            for response_part in data:
                if isinstance(response_part, tuple):
                    msg = email.message_from_string(response_part[1].decode('utf-8', errors='ignore'))
                    email_subject = msg['subject']
                    email_from = msg['from']
                    print('From: ' + email_from)
                    print('Subject: ' + email_subject + '\n')


    except Exception as e:
        print('ERROR: ' + str(e))



acccheck()

КОНЕЦ КОДА ////

ОШИБКА:

ОШИБКА: ошибка команды FETCH: BAD [b "Ошибка в команде IMAP FETCH: неожиданно ')' (0,001 + 0,000 с)."] email_1 pw_1 ОШИБКА: ошибка команды FETCH: BAD [b "Ошибка в команде IMAP FETCH: неожиданно ')' (0,001 + 0,000 с)."] email_2 pw_2 ОШИБКА: ошибка команды FETCH: BAD [b "Ошибка в команде IMAP FETCH: неожиданно ')' (0,001 + 0,000 с)."] email_3 pw_3

1 Ответ

0 голосов
/ 13 июня 2019

Попробуйте это:

resp, data = mail.uid('search', None, 'X-GM-RAW', r'"subject:{}"'.format(search_term))
mail_ids = data[0]
id_list = mail_ids.split()
for ID in id_list:
  typ, mail_stuff = mail.uid('fetch', ID, '(RFC822)')

...