Python 搜索 imap 电子邮件中的字符串

标签 python html email imaplib

Python 新手,遇到一些困难。
我正在通过 imap 从 gmail 取回电子邮件(起始代码来自 https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example-with-gmail/),并希望在特定电子邮件(我能够获取)中搜索特定字符串。像这样

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'

它总是将 done 设置为 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 上,但似乎无法弄清楚如何正确解析电子邮件。

谢谢!

最佳答案

上面的文字是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

关于Python 搜索 imap 电子邮件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787705/

相关文章:

python - 查找 1 个且只有 1 个字符,Python

python - Google AppEngine (GAE) 上的 RestrictedPython

html - 将最大宽度并在父级中间对齐文本

java - 如何验证用户是否点击了我发送给他/她的电子邮件中的链接?

php - 使用 PHP 的 Apache 速度

python - 通过比较值而不是列名称来合并两个数据框

python - Autobahn 可以使用自定义 json 编码器吗?

html - 有没有立即显示更改的 HTML/CSS/JS 编辑器?

javascript - 在函数中使用参数调用变量

email - 电子邮件中 Assets 的绝对路径,在 Symfony2 中没有请求对象