Как ответить на последнее письмо (IMAP4) в папке «Входящие»? - PullRequest
0 голосов
/ 03 января 2019

Python IMAP4, как ответить на электронное письмо с указанным UID или последним электронным письмом в папке «Входящие»

Мне удалось войти в свою почту с IMAP4 и получить последний UID, но я не знаю, как ответить напоследнее электронное письмо в почтовом ящике мой код автоматизации Python:

    self.mail = imaplib.IMAP4_SSL('imap.gmail.com')
    self.mail.login(self.data["emailUsername"], self.data["emailPassword"]) 
    self.mail.list()
    self.mail.select("inbox")
    subjectStr = '(HEADER Subject ' + "\"" + mySubject + "\"" + ')'
    result, UIDemailsWithGivenSubject = self.mail.uid('search', None, subjectStr)
    ids_string = UIDemailsWithGivenSubject[0].decode("utf-8")
    ids_string_list = ids_string.split(" ")
    self.lastEmailUid = ids_string_list[-1]

Теперь, как мне ответить на последнее письмо или ответить / ответить с заданным UID.

1 Ответ

0 голосов
/ 03 января 2019

Вы можете искать выбранный почтовый ящик следующим образом:

res, data = self.mail.search(None, 'ALL')

Ваши данные будут выглядеть примерно так: [b'1 2 3 4 5 6 7 8 9 10 11 12'], где 12 - это UID для последнего сообщения в выбранном почтовом ящике.Теперь вы можете получить это письмо с помощью

self.mail.fetch(data[0].split()[-1], '(RFC822)')

Объяснение

IMAP4.search(charset, criterion[, ...]) возвращает список всех электронных писем в вашем текущем почтовом ящике.Они, как правило, упорядочены по дате, первый из которых самый старый.Укажите None для набора символов для поиска любой почты, а для критерия установлено значение All.

См. Документация Python imaplib

data[0].split()[-1] возвращает последнееэлемент ([-1]) вашего списка почтовых UID

Ответить на почту

Вы используете протокол IMAP для доступа к почтовому серверу.IMAP означает

Протокол доступа к Интернет-сообщениям

Он предназначен для доступа к сообщениям, а не для отправки почты.Вам нужен SMTP для отправки сообщений.Посмотрите на этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...