Получение ссылки на письмо

При работе с imaplib из Python столкнулся с проблемой: В данных письма не содержится информация, которая помогла бы в создании ссылки на это письмо. Я могу вытащить очень много разных данных, но ничего, что помогло бы создать ссылку. Возможно, решением является Message-ID внутри data, но никаких способов на просторах интернета я не нашел, всё-таки запрос довольно специфический.

P.S ссылка на сообщение в обычном виде выглядит примерно так: https://mail.yandex.ru/?uid=1747723179#message/102217909859165311

Код прикладываю:

import imaplib
from email.header import decode_header

# Сюда передаются данные для входа в почту (логин и пароль приложения)
EMAIL = '[email protected]'
PASSWORD = '...'

def read_incoming_emails(email_user=EMAIL, email_pass=PASSWORD):
    mail = imaplib.IMAP4_SSL('imap.yandex.ru')
    mail.login(email_user, email_pass)
    # Папка "Входящие"
    mail.select('inbox')
    # Только непрочитанные сообщения
    status, messages = mail.search(None, 'UNSEEN')
    for num in messages[0].split():
        # Получение данных сообщения
        status, data = mail.fetch(num, '(RFC822)')
        # Можно посмотреть, что внутри data. Message-ID находится именно там
        # print('data')
        # print(data)
        email_msg = data[0][1]
        # Декодирование сообщения
        msg = email.message_from_bytes(email_msg)

        # Получение темы сообщения
        subject = decode_header(msg["Subject"])[0][0]
        if isinstance(subject, bytes):
            subject = subject.decode()
        # Получение отправителя сообщения
        from_ = msg.get("From")
        print(f"Тема: {subject}")
        print(f"От: {from_}")

        # Если сообщение многочастное, получаем тело сообщения
        if msg.is_multipart():
            # Цикл по частям сообщения
            for part in msg.walk():
                # Если часть текстовая
                if part.get_content_type() == "text/plain":
                    body = part.get_payload(decode=True).decode()
                    print(f"Body: {body}")
                    break
        else:
            print('Сообщение не удалось декодировать')
    mail.logout()
read_incoming_emails()```

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