Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自jython中已解析电子邮件对象的电子邮件正文_Python_Email_Jython_Parsing - Fatal编程技术网

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

Python 来自jython中已解析电子邮件对象的电子邮件正文,python,email,jython,parsing,Python,Email,Jython,Parsing,我有一个目标 fp = open(self.currentEmailPath, "rb") p = email.Parser.Parser() self._currentEmailParsedInstance= p.parse(fp) fp.close() self.currentEmailParsedInstance,从这个对象我想得到一封电子邮件的正文,文本没有HTML 我该怎么做 像这样的 newmsg=self._currentEmai

我有一个目标

    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)
输出=类型“列表”


电子邮件

返回路径:
接收:通过mxx3.xx.net(xxx)从xx.xx.net(示例)接收
id 485EF65F08EDX5E12用于xxx@xx.com; 2008年10月23日星期四06:07:51+0200
接收:通过example.net(ccc)从XXXXX 2(ccc)接收(认证为xxxx)。xxx@example.com) 例如,id 48798D4001146189。example@example-example.com;2008年10月23日星期四06:07:51+0200
摘自:“示例”
致:
主题:FW:示例 日期:2008年10月23日星期四12:07:45+0800
组织:例如 消息ID:
MIME版本:1.0
内容类型:多部分/混合
boundary=“---=\u NextPart\u 000\u 0017\u 01C93507.F6F64E30”
X-Mailer:Microsoft Office Outlook 11
X-MimeOLE:由Microsoft MimeOLE V6.00.2900.3138制作
线程索引:Ack0wLaumqgZo1oXSBuIpUCEg/WFOAABAFA

这是MIME格式的多部分消息

------=\u下一部分\u 000\u 0017\u 01C93507.F6F64E30
内容类型:多部分/备选
boundary=“---=\u下一部分\u 001\u 0018\u 01C93507.F6F64E30”

------=\u下一部分\u 001\u 0018\u 01C93507.F6F64E30
内容类型:文本/纯文本
charset=“us ascii”
内容传输编码:7bit

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

请参阅附件中的示例。doc)

谢谢

B.rgds

xxx xxx

------=\u下一部分\u 001\u 0018\u 01C93507.F6F64E30
内容类型:text/html
charset=“us ascii”
内容传输编码:引用可打印

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'>

HTML文件

------=\u下一部分\u 001\u 0018\u 01C93507.F6F64E30--

------=\u下一部分\u 000\u 0017\u 01C93507.F6F64E30
内容类型:应用程序/msword
name=“xxxx.doc”
内容传输编码:base64
内容处置:附件
filename=“xxxx.doc”

0M8R4KGxGUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA eaaaygaaaaaaad+//aaaaaaf8aaad///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// pcEAI2AJBAAA+FK/AAAAAAAAAAAABGAAANEIAA4AympiaqevoruaAAAAAAAAAAAAAAAAAAAA aaaecbyanlamn/aaddfwaaq4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad//w8aaaaaaaa aaaaaa d//w8AAAAAAAAAAAD//w8aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4hsa aaaaaaaaaaaaaaaaaaoibaaa4aaaaghwaahwaaacwaaaaaaaaaaaaaafeaaaaaaabzcaaegbaadmhaaa FGAAAPWCAAAAAA/BWAAAAAAAAD8HAAAAAAAAAAAPWCAAAAAAAAA/BWAAAAAAAAAAA8HAAAAAPWCAAAAA aaaamjyaaaaaaaaaaaa0ngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0ngaaaaaaaaaaaaaaaaaaaaaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aabpoaaaaaaaalc6Aacoaaawdyaagkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapwcaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhlaaaaaaaaaaaaaafg2aaaaaaaaaaaaaaaaaaa

------=\u下一部分\u 000\u 0017\u 01C93507.F6F64E30--


我只想得到:

发件人: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,本质上是递归的。

这会让您了解消息的内容

self.currentEmailParsedInstance.get_payload()
至于纯文本部分,您必须自己剥离HTML,例如使用BeautifulSoup

检查有关解析器返回的消息类的更多信息。如果您的意思是获取包含HTML和纯文本版本的消息的文本部分,那么可以指定一个索引来获取所需的部分

我尝试了另一封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'
部分将包含多部分消息的所有部分,例如,您可以检查它们的内容类型,并仅获取文本/普通类型

祝你好运。

结果就是这样

        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"

嗨,只是想要文本,我想扔掉html。请再看一遍这个问题,请重写你的问题。那些电子邮件看起来怎么样?get_payload()的问题是什么?为什么在一个示例中使用self.currentEmailParsedInstance,而在另一个示例中使用self.currentEmailParsedInstance。_email?get_payload()将返回邮件正文。如果您的消息是多部分的,那么您必须提供一个索引,正如我在回答中所说的。请更明确地说明,这是msg=self的输出。\u currentEmailParsedInstance.get\u有效负载(0);印刷味精;“ImportError:没有名为locale的模块”这就是我理解的,当你说给它一个索引时。我肯定我误解了你的意思。或者我理解为newmsg=self._currentEmailParsedInstance.get_payload();body=newmsg[0]。获取内容。。。。?;我在试着做b