在 Python 中阅读 Gmail 电子邮件
Reading Gmail Email in Python
我正在尝试创建一个简单的脚本来检查我的 Gmail 中是否有特定标题的电子邮件。当我 运行 这个程序在 Python 3.7.3 上时,我收到这个数据:('OK', [b'17'])
.
我需要访问 python 内电子邮件的 body。我只是不确定如何处理我拥有的数据。
这是我当前的代码:
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建议的link)
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)])')
我正在尝试创建一个简单的脚本来检查我的 Gmail 中是否有特定标题的电子邮件。当我 运行 这个程序在 Python 3.7.3 上时,我收到这个数据:('OK', [b'17'])
.
我需要访问 python 内电子邮件的 body。我只是不确定如何处理我拥有的数据。
这是我当前的代码:
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建议的link)
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)])')