【问题标题】:Python-Parse email Body and truncate MIME headersPython-解析电子邮件正文并截断 MIME 标头
【发布时间】:2016-06-09 14:06:43
【问题描述】:

我有一个看起来有点像的电子邮件正文。

现在我想从中删除所有标题,只保留对话电子邮件文本。我如何在python中做到这一点?

我尝试了 email.parser 模块,但这并没有给我想要的结果。

请查看以下代码以获取更多信息。

import email
a="""--c66f5985-233d-4e89-b598-6398b60cbe00
Content-Type: multipart/alternative;
     differences="Content-Type";
    boundary="d5eff9f8-76b3-4320-adfb-1e51add8fa8f"

--d5eff9f8-76b3-4320-adfb-1e51add8fa8f
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable

THis is a demo email body

Thanks And Regards,
Ana
"""



b = email.message_from_string(a)
if b.is_multipart():
    for payload in b.get_payload():
        # if payload.is_multipart(): ...
        print (payload.get_payload())
else:
    print (b.get_payload())

【问题讨论】:

    标签: python email parsing mime


    【解决方案1】:
    import imaplib,email
    
    hst = "your.host.adresse.com"
    usr = "login"
    pwd = "password"
    
    imap = imaplib.IMAP4(hst)
    
    try:
        imap.login(usr, pwd)
    except Exception as e:
        raise IOError(e)
    
    try:
        imap.select("Inbox") # Tell Imap where to go
        result, data = imap.uid('search', None, "ALL")
        latest = data[0].split()[-1]
        result, data = imap.uid('fetch', latest, '(RFC822)')
        a = data[0][1] # This contains the Mail Data
    
    
    except Exception as e:
        raise IOError(e)
    
    b = email.message_from_string(a)
    if b.is_multipart():
        for payload in b.get_payload():
            b = (payload.get_payload())
    else:
        b = (b.get_payload())
    
    print b
    

    这会从邮件中删除您不希望在最终文本中出现的所有内容。我已经用你的代码对此进行了测试。你没有展示你是如何导入邮件的(你的a)所以我猜这就是你得到解码问题的地方。

    如果您对 HTML 邮件有任何问题:

    from bs4 import BeautifulSoup
    soup = BeautifulSoup(b, 'html.parser')
    soup = soup.get_text()
    print soup
    

    现在应该可以完成这项工作,但我建议您将默认的 python 解析器更改为 lxml 或 html5lib。

    【讨论】:

    • 而且我只是使用如上所示的电子邮件正文为我提供了便利,没有主机名和其他凭据...
    猜你喜欢
    • 2011-02-13
    • 2015-07-26
    • 2020-09-18
    • 2018-02-23
    • 2018-12-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多