Python IMAP4 如何回复具有给定 UID 的电子邮件或收件箱中的最后一封电子邮件
我已经能够使用 IMAP4 登录我的 gmail 并获取最后一个 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 回复/回复。
请您参考如下方法:
您可以像这样搜索选定的邮箱:
res, data = self.mail.search(None, 'ALL')
您的数据将如下所示:[b'1 2 3 4 5 6 7 8 9 10 11 12'] 其中 12 是所选邮箱中的最新电子邮件。您现在可以使用
self.mail.fetch(data[0].split()[-1], '(RFC822)')
解释
IMAP4.search(charset, criterion[, ...]) 返回当前邮箱中所有电子邮件的列表。它们通常按日期排序,第一个是最旧的。 为字符集提供 None 以搜索任何邮件,条件设置为 All。
参见 Python imaplib documentation
data[0].split()[-1] 返回邮件 UID 列表的最后一个元素 ([-1])
回复邮件
您正在使用 IMAP 协议(protocol)访问邮件服务器。 IMAP 代表
Internet Message Access Protocol
它用于消息访问,而不是用于发送邮件。您需要 SMTP 才能发送消息。看看this question .
