Как узнать кто отправил письмо мне на почту (емайл)?

Нужно создать функцию, которая будет заходить на Google Mail и выдавать мне почту с которой пришло мне письма. Не могу решить эту проблему, много чего пытался, ничего не помогало.

Как это можно сделать?

import imaplib

login = str(self.login.get())
        password = str(self.password.get())
        mail1 = str(self.mail.get())
        mail = imaplib.IMAP4_SSL('imap.gmail.com')
        mail.login({login},{password})
        mail.select('inbox')

Тут я использую блоки ввода информации, и в этой функции использую их.


Ответы (1 шт):

Автор решения: MaxU

Пример:

import re
import imaplib
import email

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('[email protected]','mypassword')

# сначала выбираем папку All Mail
folder = [re.sub(r'.*?("\[G[^"]*").*', r'\1', f.decode("utf-8"))  for f in mail.list()[1] if br"\All " in f][0]

mail.select(folder)

# поиск писем по отправителю
typ, data = mail.search(None, '(FROM "Paul")')

ID найденных писем

In [29]: data
Out[29]: [b'5828 6791 6956 7523 7840']

читаем и парсим одно из найденных писем:

typ, d = mail.fetch('5828', '(RFC822)')
msg = email.message_from_bytes(d[0][1])

аттрибуты msg:

In [34]: msg.keys()
Out[34]:
['Delivered-To',
 'Received',
 'X-Received',
 'Return-Path',
 'Received',
 'Received-SPF',
 'Authentication-Results',
 'Received',
 'DKIM-Signature',
 'X-Google-DKIM-Signature',
 'X-Gm-Message-State',
 'X-Received',
 'MIME-Version',
 'Received',
 'Received',
 'From',
 'Date',
 'Message-ID',
 'Subject',
 'To',
 'Content-Type']

дальше можно посмотреть каждый из этих атрибутов:

In [35]: print(msg["from"])
Paul ****** <paul.******@******.com>

→ Ссылка