ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-27 07:53:22  阅读:271  来源: 互联网

标签:python parsing jython email


我有一个对象.

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

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

我该怎么做?

这样的事情?

        newmsg=self._currentEmailParsedInstance.get_payload()
        body=newmsg[0].get_content....?

然后从身体剥离html.
那是什么……返回实际文本的方法……也许我误解了你

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

输出=类型’列表’

电子邮件

返回路径:
收到:来自xx.xx.net(示例)的mxx3.xx.net(xxx)
        id 485EF65F08EDX5E12,用于xxx@xx.com; 2008年10月23日星期四06:07:51 0200
收到:来自xxxxx2(ccc)的example.net(ccc)(经过身份验证为xxxx.xxx@example.com)
        id 48798D4001146189,例如example.example@example-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
内容类型:multipart / mixed;
    边界= “—- = _ NextPart_000_0017_01C93507.F6F64E30”
X-Mailer:Microsoft Office Outlook 11
X-MimeOLE:由Microsoft MimeOLE V6.00.2900.3138制作
Thread-Index:Ack0wLaumqgZo1oXSBuIpUCEg / wfOAABAFEA

这是MIME格式的多部分消息.

—— = _ NextPart_000_0017_01C93507.F6F64E30
内容类型:multipart / alternative;
    边界= “—- = _ NextPart_001_0018_01C93507.F6F64E30”

—— = _ NextPart_001_0018_01C93507.F6F64E30
内容类型:text / plain;
    字符集= “US-ASCII”
内容传输编码:7位

来自:example.example [mailto:example@example.com]
发送时间:2008年10月23日星期四上午11:37
致:xxxx@example.com
主题:例如S / I(B / L
No.:4357-0120-810.044)

请查找附带的example.doc),

谢谢.

B.rgds,

xxx xxx

—— = _ NextPart_001_0018_01C93507.F6F64E30
内容类型:text / html;
    字符集= “US-ASCII”
Content-Transfer-Encoding:quoted-printable

xmlns:o = 3D“urn:schemas-microsoft-com:office:office”=
xmlns:w = 3D“urn:schemas-microsoft-com:office:word”=
xmlns:st1 = 3D“urn:schemas-microsoft-com:office:smarttags”=
的xmlns = 3D “http://www.w3.org/TR/REC-html40” &GT

HTML STUFF直到

—— = _ NextPart_001_0018_01C93507.F6F64E30–

—— = _ NextPart_000_0017_01C93507.F6F64E30
Content-Type:application / msword;
    NAME = “xxxx.doc”
内容传输编码:base64
内容 – 处理:附件;
    文件名= “xxxx.doc”

0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7 / CQAGAAAAAAAAAAAAAAABAAAAYAAAAAAAAAAA
EAAAYgAAAAEAAAD //// AAAAAF8AAAD //////////////////////////////////////////// /
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// //////////////////////////
////////////////////////////////////////////////// /////////////////////////小号
pcEAI2AJBAAA FK / AAAAAAAAEAAAAAAABAAAnAIAAA4AYmpiaqEVoRUAAAAAAAAAAAAAAAAAAAAAA
AAAECBYAMlAAAMN / AADDfwAAQQ4AAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD // w8AAAAA
AAAAAAD // // w8AAAAAAAAAAAD w8AAAAAAAAAAAAAAAAAAAAAAKQAAAAAAEYEAAAAAAAARgQAAEYE
AAAAAAAARgQAAAAAAABGBAAAAAAAAEYEAAAAAAAARgQAABQAAAAAAAAAAAAAAFoEAAAAAAAA4hsA
AAAAAADiGwAAAAAAAOIbAAA4AAAAGhwAAHwAAACWHAAARAAAAFoEAAAAAAAABzcAAEgBAADmHAAA
FgAAAPwcAAAAAAAA / BwAAAAAAAD8HAAAAAAAAPwcAAAAAAAA / BwAAAAAAAD8HAAAAAAAAPwcAAAA
AAAAMjYAAAIAAAA0NgAAAAAAADQ2AAAAAAAANDYAAAAAAAA0NgAAAAAAADQ2AAAAAAAANDYAACQA
AABPOAAAaAIAALc6AACOAAAAWDYAAGkAAAAAAAAAAAAAAAAAAAAAAAAARgQAAAAAAABHLAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD8HAAAAAAAAPwcAAAAAAAARywAAAAAAABHLAAAAAAAAFg2AAAAAAAA

—— = _ NextPart_000_0017_01C93507.F6F64E30–

我只想得到:

来自:xxxx.xxxx [mailto:xxxx@example.com]
发送时间:2008年10月23日星期四上午11:37
致:xxxx@example.com
主题:xxxxx的S / I(提单
No.: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!!

非常感谢Vinko.

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

解决方法:

这将为您提供消息的内容

self.currentEmailParsedInstance.get_payload()

至于仅文本部分,您必须自己剥离HTML,例如使用BeautifulSoup.

检查this link以获取有关Parser返回的Message类的更多信息.如果您的意思是获取包含HTML和纯文本版本的消息的文本部分,则可以指定get_payload()的索引以获取所需的部分.

我尝试使用不同的MIME电子邮件,因为您粘贴的内容似乎格式不正确,希望您在编辑时出现格式错误.

>>> parser = email.parser.Parser()
>>> message = parser.parse(open('/home/vinko/jlm.txt','r'))
>>> message.is_multipart()
True
>>> parts = message.get_payload()
>>> len(parts)
2
>>> parts[0].get_content_type()
'text/plain'
>>> parts[1].get_content_type()
'message/rfc822'
>>> parts[0].get_payload()
'Message Text'

部件将包含多部分消息的所有部分,您可以检查其内容类型如图所示,并仅获取文本/普通部分,例如.

祝好运.

标签:python,parsing,jython,email
来源: https://codeday.me/bug/20190627/1302564.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有