Используя регулярные выражения, мне удалось извлечь все адреса отправителей из электронных писем, находящихся в моей папке «Входящие». Однако я много раз пытался и не получалось также извлечь связанные UID для этих отдельных электронных писем.
Вот что у меня есть:
result, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
for i in id_list:
typ, data = mail.fetch(i,'(RFC822)')
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_bytes(response_part[1])
sender = msg['from'].split()[-1]
address = re.sub(r'[<>]','',sender)
# Ignore any occurences of own email address and add to list
if not re.search(r'' + re.escape(LOGIN),address) and not address in email_list:
email_list.append(address)
print address
Вывод медленный (я полагаю, из-за регулярных выражений), но тем не менее он выполняет свою работу.
Выход:
no-reply@mail.instagram.com
no-reply@accounts.google.com
rhodesi926@icloud.com
wat@elevenyellow.com
pinbot@notifications.pinterest.com
support@autopin.co
pinbot@account.pinterest.com
info@shootbox.me
pinbot@explore.pinterest.com
bugra@boostfy.co
mail-noreply@google.com
pinbot@inspire.pinterest.com
mua@mikasabeauty.com
noreply@apple.com
privacy-noreply@policies.google.com
Отчасти проблема в том, что я не понимаю, как идентификаторы UID связаны с отправителем и где эти идентификаторы хранятся в структуре IMAP.
Я предполагаю, что мог бы исправить правильное выражение, которое могло бы извлечь любую 4-значную комбинацию чисел из поля "UID:", тогда я боюсь, что это замедлит мой сценарий до ползания ....
Если кто-то понимает Imaplib и может помочь, я буду бесконечно благодарен. Спасибо.