문제

나는 물체가있다.

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

self.currenteMailparsedInstance,이 개체에서 나는 이메일의 본문을 얻고 싶습니다.

어떻게해야하나요?


이 같은?

        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 (예)에서
xxx@xx.com의 ID 485EF65F08EDX5E12; Thu, 2008 년 10 월 23 일 06:07:51 +0200
수신 : example.net (ccc)의 xxxxx2 (ccc)에서 (xxxx.xxx@example.com으로 인증 됨) ID 48798D4001146189 examp.example@example-example.com; Thu, 2008 년 10 월 23 일 06:07:51 +0200
에서 : "예"
에게:
제목 : FW : 예제 날짜 : Thu, 2008 년 10 월 23 일 12:07:45 +0800
조직 : 예제 메시지 -ID : <001601C934C4 $ XXXX30 $ a9ff460A@xxx>
마임 버전 : 1.0
내용 유형 : 멀티 파트/혼합;
경계 = "---- = _ NextPart_000_0017_01C93507.F6F64E30"
X- 메일러 : Microsoft Office Outlook 11
X-Mimeole : Microsoft Mimeole V6.00.2900.3138에서 제작
스레드-인덱스 : ack0wlaumqgzo1oxsbuipuceg/wfoaabafea

이것은 MIME 형식의 멀티 파트 메시지입니다.

------ = _ NEXTPART_000_0017_01C93507.F6F64E30
내용 유형 : 멀티 파트/대안;
경계 = "---- = _ NextPart_001_0018_01C93507.F6F64E30"

------ = _ NEXTPART_001_0018_01C93507.F6F64E30
내용 유형 : 텍스트/일반;
charset = "us-ASCII"
컨텐츠 전송 인코딩 : 7 비트

보낸 사람 : example.example [mailto : example@example.com
보낸 : 2008 년 10 월 23 일 목요일 오전 11:37
to : xxxx@example.com
제목 : 예를 들어 S/I (B/L
No.:4357-0120-810.044)

audsement.doc), 첨부 된 것을 찾으십시오.

감사.

B.RGDS,

xxx xxx

------ = _ NEXTPART_001_0018_01C93507.F6F64E30
내용 유형 : 텍스트/html;
charset = "us-ASCII"
Content-Transfer-Encoding : 인용 인쇄 가능

XMLNS : O = 3D "URN : Schemas-Microsoft-Com : Office : Office"=
XMLNS : W = 3D "항아리 : Schemas-Microsoft-Com : Office : Word"=
XMLNS : ST1 = 3D "URN : Schemas-Microsoft-Com : Office : SmartTags"=
xmlns = 3d "http://www.w3.org/tr/rec-html40">

html 물건까지

------ = _ NEXTPART_001_0018_01C93507.F6F64E30--

------ = _ NEXTPART_000_0017_01C93507.F6F64E30
내용 유형 : 응용 프로그램/msword;
이름 = "xxxx.doc"
컨텐츠-트랜스퍼 인코딩 : Base64
내용화 : 첨부 파일;
filename = "xxxx.doc"

0m8r4kgxgueaaaaaaaaaaaaaaaaaaaaaaaaapgadap7/cqagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad+/// aaaaaf8aaad //////////////////////////////////////////////////////////////////////aaaaaaaaaaaaaaaaaad ////////////////////////////////////////////////////////////////////////////////4 //////////////////////////// ////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////4 /////////////////////////////////////////////////////////////////////////////////4 ///////////////////////////// /////////////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////4 ////////////////////////////////////////////////////////////////////////////////4 /////////////////////////////// ///////////////////////////////////////////////////////4 //////////////////////////////////////////////////////////////////////////////4 ///////////////////////////////////////////////////////////////////////////////4 ///////////////////////////////////s pcEAI2AJBAAA+FK/AAAAAAAAEAAAAAAABgAAnEIAAA4AYmpiaqEVoRUAAAAAAAAAAAAAAAAAAAAA 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
to : xxxx@example.com
제목 : XXXXX 용 S/I (B/L
No.:4357-0120-810.044)

pls는 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()

텍스트 전용 부분은 예를 들어 BeautifulSoup을 사용하는 것과 같이 HTML을 스스로 제거해야합니다.

확인하다 이 링크 메시지 클래스에 대한 자세한 내용은 파서가 반환합니다. 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'

부품에는 Multipart 메시지의 모든 부분이 포함되며, 예를 들어 내용 유형을 확인하고 예를 들어 텍스트/평원 만 얻을 수 있습니다.

행운을 빕니다.

다른 팁

이것으로 끝났습니다

        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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top