Skip to main content
 首页 » 编程设计

python之在 Python 中读取 Gmail 电子邮件

2024年09月03日29tintown

我正在尝试创建一个简单的脚本来检查我的 Gmail 中是否有具有特定标题的电子邮件。当我在 Python 3.7.3 上运行这个程序时,我收到了这个数据:('OK', [b'17'])。

我需要在 python 中访问电子邮件正文。我只是不确定如何处理我拥有的数据。

这是我当前的代码:

import imaplib 
import credentials 
 
imap_ssl_host = 'imap.gmail.com' 
imap_ssl_port = 993 
username = credentials.email 
password = credentials.passwd 
server = imaplib.IMAP4_SSL(imap_ssl_host, imap_ssl_port) 
 
server.login(username, password) 
server.select('INBOX') 
 
data = server.uid('search',None, '(SUBJECT "MY QUERY HERE!")') 
print(data) 

运行代码的结果:

('OK', [b'17']) 

我知道这有点粗糙,但我仍在学习,所以如果您有任何帮助我改进的建议,我们将不胜感激!

请您参考如下方法:

您需要先列出所选邮箱的内容并获取其中一项。你可以做这样的事情(也检查@asynts 建议的链接)

    imap.select('Inbox') 
    status, data = imap.search(None, 'ALL') 
    for num in data[0].split(): 
      status, data = imap.fetch(num, '(RFC822)') 
      email_msg = data[0][1] 

如果您只想要正文中的特定字段,而不是解析 RFC,您可以像这样过滤字段:

    status, data = imap.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT DATE FROM TO)])')