Я пытаюсь получить всевозможные письма, которые мне пришли на почту Gmail. Но почему-то мне приходит ошибка
import json
import requests
url_site = 'https://www.googleapis.com/gmail/v1/users/me/messages'
response = requests.get(url_site)
data = json.loads(response.content.decode('utf-8'))
print(data)
Ответы (1 шт):
Автор решения: Стас
→ Ссылка
Вы сказали
получить все возможные письма которые мне пришли на почту Gmail
Этот скрипт получает имена отправителей всех писем, но там, где в коде "примечание 1" можно заменить from на date, subject и т.д. чтобы получать другие данные. (Не все данные можно преобразовать в header)
Также, чтобы подключиться к gmail через python нужно разрешить небезопасные приложения в настройках аккаунта (здесь). Для подключения к Яндексу такого не нужно.
Ещё у вас должно быть разрешено подключение по IMAP (Gmail - настройки - Пересылка и POP/IMAP - включаете IMAP, и, по желанию, убираете ограничения на размер папки IMAP)
import imaplib
import email
from email.header import Header, decode_header, make_header
imap = imaplib.IMAP4_SSL('imap.gmail.com') #сервер imap
imap.login('LOGIN', "PASSWORD") #ваш логин и пароль
imap.select('INBOX') #подключаемся к папке "Входящие"
mails = (len(str(imap.search(None, 'ALL')).split(" ")) - 1) #количество всех
#писем на почте (способ не лучший, но работает)
for i in range(1, mails + 1): #проходимся по всем письмам
status, data = imap.fetch(str(i), '(RFC822)')#получение письма
msg_raw = email.message_from_bytes(data[0][1])
msg = str(make_header(decode_header(msg_raw['From'])))#преобразование
#в читабельный вид (примечание 1)
print(msg)
imap.close() #закрытие соединения
imap.logout() #и выход из аккаунта