如何回复收件箱中的最后一封电子邮件(IMAP4)?

时间:2019-01-02 21:20:08

标签: python email imap

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答复/答复。

1 个答案:

答案 0 :(得分:1)

您可以像这样搜索选定的邮箱:

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 documentation

data[0].split()[-1]返回邮件UID列表的最后一个元素([-1]

回复邮件

您正在使用IMAP协议访问邮件服务器。 IMAP代表

  

Internet邮件访问协议

用于邮件访问,而不是发送邮件。您需要SMTP才能发送邮件。看看this question