Skip to main content
 首页 » 编程设计

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

2024年12月31日33powertoolsteam

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 .