Ошибка Imap при проверке электронной почты в python - PullRequest
0 голосов
/ 13 июля 2020

Я использую Python 3.7.7 и хотел проверить свои электронные письма Gmail с помощью этого кода:

import smtplib
import time
import imaplib
import email
mail = imaplib.IMAP4_SSL("imap.gmail.com")
        mail = imaplib.IMAP4_SSL("imap.gmail.com")
mail.login("tanmay.noreply@gmail.com","mypassword")
mail.select('inbox')

type, data = mail.search(None, 'ALL')
mail_ids = data[0]

id_list = mail_ids.split()   
first_email_id = int(id_list[0])
latest_email_id = int(id_list[-1])


for i in range(latest_email_id,first_email_id, -1):
    typ, data = mail.fetch(i, '(RFC822)' )

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

Но я получаю эту ошибку:

Traceback (most recent call last):
  File "C:/Users/jeeva/Desktop/Tanmay_new/python/stackimap.py", line 19, in read_email_from_gmail
    typ, data = mail.fetch(i, '(RFC822)' )
  File "C:\Program Files\Python37\lib\imaplib.py", line 534, in fetch
    typ, dat = self._simple_command(name, message_set, message_parts)
  File "C:\Program Files\Python37\lib\imaplib.py", line 1196, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Program Files\Python37\lib\imaplib.py", line 961, in _command
    data = data + b' ' + arg
TypeError: can't concat int to bytes

Пожалуйста, помогите меня. Я нашел фрагмент python 2 в на этом веб-сайте и преобразовал его в python 3.

1 Ответ

1 голос
/ 24 июля 2020

Я заметил, что автору нравится библиотека imap_tools, полный ответ:

Короткий пример библиотеки высокого уровня:

from imap_tools import MailBox, AND

# get list of email subjects from INBOX folder
with MailBox('imap.mail.com').login('test@mail.com', 'password', 'INBOX') as mailbox:
    subjects = [msg.subject for msg in mailbox.fetch()]

https://github.com/ikvk/imap_tools

  • Атрибуты проанализированных писем
  • Конструктор запросов для поиска писем
  • Работа с электронными письмами в папках (копирование, удаление, отметка, перемещение, просмотр)
  • Работа с папки почтового ящика (список, установить, получить, создать, существует, переименовать, удалить, статус)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...