搜索电子邮件,然后使用Python 3+ imaplib模块获取其内容

时间:2019-02-18 15:43:59

标签: python-3.x imaplib

我正在尝试制作一种可以按其标题查找电子邮件的内容,然后在其内容中搜索某些内容。

import email, imaplib, re, quopri
username = "" 
password = ""
mail = imaplib.IMAP4_SSL("imap.mail.yahoo.com", port=993)
mail.login(username, password)
mail.list()

success, emai = mail.search(None, '(SUBJECT "check this out")')

for x in emai[0].split():
    mai, dat = mail.fetch(x, "(RFC822)")
    decoded = quopri.decodestring(dat[0][1].decode())
    email_msg = email.message_from_string(decoded)
    break

link = re.search(r'test1 (.*?) test2', str(email_msg))
print(link)

很明显,我的代码很混乱,但是此示例应显示帮助我的所有内容。例如,我给自己发送了一封电子邮件,名为“ check this out”,内容为“ test1 hit test2”。但是我一直在努力寻找答案,因此我要向你们寻求帮助。如何搜索电子邮件,然后获取其内容?

谢谢!

1 个答案:

答案 0 :(得分:0)

for x in emai[0].split():
    mai, dat = mail.fetch(x, "(RFC822)")
    email_msg = email.message_from_string(dat[0][1])
    if email_msg.is_multipart():
        for payload in email_msg.get_payload(decode=True):
        link = re.search(r'test1 (.*?) test2', payload.get_payload(decode=True))
        print(link)
    else:
        link = re.search(r'test1 (.*?) test2', email_msg.get_payload(decode=True))
        print(link)
    break