Python与GMail - 将指定账户的特定主题邮件标记为已读

0 投票
1 回答
539 浏览
提问于 2025-04-17 20:31

我给我的树莓派的GMail账户发邮件,让它执行一些任务。它会用Python检查邮件的主题和收件人地址,如果这些信息没问题,它就会执行相应的任务。我使用feedparser来检查邮箱和主题内容(见下面的代码)。

details = feedparser.parse("https://" + PiEmail + ":" + PiPwd + "@mail.google.com/gmail/feed/atom")
FromEmail = details['items'][i].author_detail.email
Subject = details['items'][i].title.lower()

不过,一旦任务完成,我该怎么标记那封包含指令的邮件为已读呢?

1 个回答

1

我想用Feedparser是做不到的。我之前也遇到过类似的问题,最后我用imaplib这个库来解决的。具体做法是先检查Gmail里的邮件主题,然后把邮件的状态从“未读”改成“已读”。代码是这样的:

import imaplib

details = feedparser.parse("https://" + PiEmail + ":" + PiPwd + "@mail.google.com/gmail/feed/atom")
FromEmail = details['items'][i].author_detail.email
Subject = details['items'][i].title.lower()

obj = imaplib.IMAP4_SSL('imap.gmail.com', '993')
obj.login(PiEmail, PiPwd)
obj.select('Inbox')  
typ ,data = obj.search(None,'UnSeen')
obj.store(data[0].replace(' ',','),'+FLAGS','\Seen')

希望这个方法对你有帮助!

撰写回答