2016-03-04 111 views
2

新的Python,有一些麻烦过去的这一点。
上午通过IMAP取回从Gmail电子邮件(从https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-gmail/启动代码)和要搜索一个特定的电子邮件(这我能提取)为特定的字符串。像这样的东西Python的搜索IMAP电子邮件的字符串

ids = data[0] 
id_list = ids.split() 
ids = data[0] 
id_list = ids.split() 
latest_email_id = id_list[-1] 
result, data = mail.fetch(latest_email_id, "(RFC822)") 
raw_email = data[0][1] 

def search_raw(): 
    if 'gave' in raw_email: 
     done = 'yes' 
    else: 
     done = 'no' 

并且它总是设置为no。下面是输出的电子邮件(用于电子邮件的正文部分)

Content-Type multipart/related;boundary=1_56D8EAE1_29AD7EA0;type="text/html" 
--1_56D8EAE1_29AD7EA0 
Content-Type text/html;charset="UTF-8" 
Content-Transfer-Encoding base64 

PEhUTUw+CiAgICAgICAgPEhFQUQ+CiAgICAgICAgICAgICAgICA8VElUTEU+PC9USVRMRT4KICAg 
ICAgICA8L0hFQUQ+CiAgICAgICAgPEJPRFk+CiAgICAgICAgICAgICAgICA8UCBhbGlnbj0ibGVm 
dCI+PEZPTlQgZmFjZT0iVmVyZGFuYSIgY29sb3I9IiNjYzAwMDAiIHNpemU9IjIiPlNlbnQgZnJv 
bSBteSBtb2JpbGUuCiAgICAgICAgICAgICAgICA8QlI+X19fX19fX19fX19fX19fX19fX19fX19f 
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzwvRk9OVD48L1A+CgogICAgICAg 
ICAgICAgICAgPFBSRT4KR2F2ZQoKPC9QUkU+CiAgICAgICAgPC9CT0RZPgo8L0hUTUw+Cg== 
--1_56D8EAE1_29AD7EA0-- 

我知道这个问题是HTML,但似乎无法弄清楚如何正确地解析电子邮件。

谢谢!

+0

什么是电子邮件的输出类型?它是JSON或字符串或类似的东西? –

回答

0

上面的文本是base64编码。 Python有一个名为base64的模块,可以让你解码它。

import base64 
import re 


def has_gave(raw_email): 
    email_body = base64.b64decode(raw_email) 
    match = re.search(r'.*gave.*', email_body , re.IGNORECASE) 
    if match: 
     done = 'yes' 
     print 'match found for word ', match.group() 
    else: 
     done = 'no' 
     print 'no match found' 

    return done 
相关问题