来自jython中解析的电子邮件对象的电子邮件正文

2024-09-28 19:09:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有个目标。在

    fp = open(self.currentEmailPath, "rb")
    p = email.Parser.Parser()
    self._currentEmailParsedInstance= p.parse(fp)
    fp.close()

在self.currentEmailParsedInstance,从这个对象我想得到一个电子邮件的正文,文本只有没有HTML。。。。在

我该怎么做?在


像这样?在

^{pr2}$

然后从正文中剥离html。 那是什么。。。。方法返回实际文本。。。也许我误解了你的意思

        msg=self._currentEmailParsedInstance.get_payload()
        print type(msg)

输出=类型“列表”


电子邮件

返回路径:
接收:发件人xx.xx.net网站(示例)通过mxx3。xx.net公司(三十)
id 485EF65F08EDX5E12用于xxx@xx.com;2008年10月6日星期四 收件:XXXXX 2(ccc)收件人示例.net(ccc)(认证为xxxx.xxx公司@example.com网站) 身份证号48798D4001146189示例。示例@示例-example.com网站;2008年10月23日星期四06:07:51+0200
发件人:“示例”
收件人:
主题:FW:示例 日期:2008年10月23日星期四12:07:45+0800
组织:示例 消息ID:<;001601c934c4$xxxx30$a9ff460a@xxx>;
MIME版本:1.0
内容类型:多部分/混合;
边界=“----\u NextPart_000_0017_01C93507.f64e30”
X-mail:Microsoft Office Outlook 11
X-MimeOLE:由Microsoft MimeOLE V6.00.2900.3138制作
线程索引:Ack0wLaumqgZo1oXSBuIpUCEg/wfOAABAFEA

这是MIME格式的多部分邮件。在

---------\u下一部分_000_0017_01C93507.f64e30
内容类型:多部分/可选;
边界=“----\u NextPart_001_0018_01C93507.f64e30”

---------\u下一部分_001_0018_01C93507.f64e30
内容类型:text/plain;
charset=“us ascii”
内容传输编码:7位

发件人:示例。示例[邮箱:example@example.com]
发送时间:2008年10月23日星期四上午11:37
收件人:xxxx@example.com
主题:例如S/I(B/L
编号:4357-0120-810.044)

请查收附件示例.doc)你说

谢谢。在

B.rgds

xxx xxx

---------\u下一部分_001_0018_01C93507.f64e30
内容类型:text/html;
charset=“us ascii”
内容传输编码:引用可打印

在 xmlns:o=3D"urn:schemas微软com:办公室:办公室“=
xmlns:w=3D"urn:schemas微软com:办公室:word“=
xmlns:st1=3D"urn:schemas微软com:办公室:智能标签“=
xmlns=3D“http://www.w3.org/TR/REC-html40”>

HTML素材库

---------\u下一部分_001_0018_01C93507.f64e30--

---------\u下一部分_000_0017_01C93507.f64e30
内容类型:应用程序/msword;
名称=“xxxx.doc公司“
内容传输编码:base64
内容处置:附件;
文件名=“xxxx.doc公司““

0M8R4KGXGUEAAAAAAAAAAAAAAAAAAAPGADAP7/CQAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA eaaaygaaaaaad+//aaaaaad F8aaad///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAI2AJBAAA+FK/aaaaaaaaaaaabgaaaneiaa4aympiaqevoruaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4ampiaqevoruaa aaaecbyalamaamn/aaddfwaaqq4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqqqq4aaaaaaaa AAAAA D//W8AAAAAAAAAAD//W8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 aaaaaaaaaaaaoibaaa4aaghwaahawaacwhaaaaafoeaaaaaaaaaaaaaaaaaaaaaaaabzcaaegbaadmhaaa FgAAAPwcAAAAAAAA/bwaaaaaaaad8haaaaaaaapwcaaaaaaa/bwaaaaaad8haaaaaaaaaaa aaaamjyaaaaaaaaaaaaaaaaadq2aaaaaaaaaaaaaaaaaaaaaaaaaadq2aaaaaaaaaaaaaaaqa aabpoaaaaaaaalc6aacoaawdyaagkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqaaaaaabhlaaaaaaa aaaaaaaaaaaaaaaaaaaaaa D8haaaaaaapwcaaaaaaaywaaaaaaaaabhlaaaaaaaaaaFG2AAAAAAA

---------\u下一部分_000_0017_01C93507.f64e30--


我只想得到:

发件人:xxxx.xxxx年[邮箱:xxxx@example.com]
发送时间:2008年10月23日星期四上午11:37
收件人:xxxx@example.com
主题:xxxxx的S/I(提单
编号:4357-0120-810.044)

请查收附件xxxx.doc公司)你说

谢谢。在

B.rgds

xxx xxx


不确定邮件是否格式错误! 如果你得到一个html页面,你必须这样做:

        parts=self._currentEmailParsedInstance.get_payload()
        print parts[0].get_content_type()
        ..._multipart/alternative_
        textParts=parts[0].get_payload()
        print textParts[0].get_content_type()
        ..._text/plain_
        body=textParts[0].get_payload()
        print body
        ...get the text without a problem!!

太感谢你了。在

所以它有点像处理xml,本质上是递归的。在


Tags: selfcom示例类型内容getexample公司
2条回答

这将获得消息的内容

self.currentEmailParsedInstance.get_payload()

至于纯文本部分,您必须自己剥离HTML,例如使用beauthoulsoup。在

有关解析器返回的消息类的详细信息,请查看this link。如果要获取包含HTML和纯文本版本的消息的文本部分,则可以指定一个索引get_payload()以获取所需的部分。在

我尝试了一个不同的MIME电子邮件,因为你粘贴的内容看起来格式不正确,希望在你编辑它的时候它也有错误的格式。在

^{pr2}$

parts将包含多部分消息的所有部分,您可以检查它们的内容类型(如图所示),并仅获取text/plain类型。在

祝你好运。在

最后就这样结束了

        parser = email.parser.Parser()
        self._email = parser.parse(open('/home/vinko/jlm.txt','r'))
        parts=self._email.get_payload()
        check=parts[0].get_content_type()
        if check == "text/plain":
            return parts[0].get_payload()
        elif check == "multipart/alternative":
            part=parts[0].get_payload()
            if part[0].get_content_type() == "text/plain":
                return part[0].get_payload()
            else:
                return "cannot obtain the body of the email"
        else:
            return "cannot obtain the body of the email"

相关问题 更多 >