2012-08-14 3 views
2

좋아, 내가하고 싶은 일에 약간의 혼란이있다. 나는 이것을 다시하고있다. 내받은 편지함에 대해 실행할 스크립트를 작성하여 이메일 본문의 보낸 사람 주소, 제목 및 URL을 알려줍니다. 내가 겪고있는 문제는 스크립트의 URL 구문 분석이 본문의 이메일뿐만 아니라 모든 URL을 가져 오는 것입니다. 다음은 그 예이다 이메일받은 편지함에서 URL 추출하기

:에서 [email protected]

: [email protected]

가 제목 : 당신이 당신의 테스트를 확인하기 위해 다음 URL로 이동하십시오

점수 테스트 확인 점수. WWW.test.com/confirmation 귀하의 의견을 다시 한번 감사드립니다.

서명

조 이미지의 URL은 http://www.test.com/wp-content/uploads/_client_image/66-dcfc0fc8.png

내가 내 출력에서 ​​

되고 싶은 것입니다 (Joes의 서명의 일부는 이미지를 가지고) : [email protected]

제목 : 시험 점수를 확인하십시오.

URL : [email protected]

주제 : WWW.test.com/confirmation

나는이 대신

에서 얻을 테스트 점수 Confirem

URL : WWW.test.com/확인은 http://www.test.com/wp-content/uploads/_client_image/66-dcfc0fc8.png

그리고 여기 내 스크립트입니다

import re 
import mailbox 
import urlparse 

mbx=mailbox.mbox("Mail Box Path") 

url_pattern = re.compile('''["']http://[^+]*?['"]''') 

for k, m in mbx.iteritems(): 
    print "From %s\n" % m['from'] 
    print "Subject %s\n" % m['subject'] 
    print "URL %s\n" % url_pattern.findall(m.as_string()) 
+0

'm.as_string()'은 HTML 텍스트를 반환합니까? 그럴 경우 BeautifulSoup, lxml.html을 사용하여 링크를 추출 할 수 있습니다. – jfs

답변

0

서명은 전자 메일 본문으로 간주되므로 실제로 구분할 수는 없습니다.

관심있는 이메일에 링크가 하나만있는 것이 확실하다면 일치하는 첫 번째 URL 만보고 시도해 볼 수 있습니다.하지만 신뢰할 수있는 방법은 없습니다. 전자 메일 본문과 만 상호 작용하며 서명은 다시 처리하지 않습니다.

Someone even wrote a paper on this - 특히 다루는 이메일의 형식을 제어 할 수없는 경우 매우 어렵습니다.

관련 문제