从电子邮件收件箱中提取URL

时间:2012-08-14 20:53:28

标签: python email url extract

好的,我想要做的事情有些混乱,所以我再次这样做。我正在寻找一个脚本来对我的收件箱运行,它会给我电子邮件正文中的发件人地址,主题和URL。我遇到的问题是脚本的URL解析是从电子邮件中提取所有URL,而不仅仅是正文中的URL。这是一个例子

致:Tom@mail.com

来自:Joe@test.com

主题:确认您的考试分数

请转到以下网址确认您的考试成绩。 WWW.test.com/confirmation 再次感谢您的意见。

签名

乔 (Joes签名的一部分有图像) 图像的URL是 http://www.test.com/wp-content/uploads/_client_image/66-dcfc0fc8.png

我希望我的输出

来自:Joe@test.com

主题:确认您的考试成绩

网址:WWW.test.com/confirmation

我得到了这个

来自:Joe@test.com

主题:确认您的考试成绩

网址:WWW.test.com/confirmation,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())

1 个答案:

答案 0 :(得分:0)

签名计为电子邮件的正文 - 因此您无法将它们真正分开。

如果你确定电子邮件中只有一个你关心的链接,你可以尝试只查看你匹配的第一个网址 - 但是没有(可靠的)方法来确保你是只与电子邮件的正文进行交互,而不是签名。

Someone even wrote a paper on this - 这非常困难,尤其是当您无法控制正在处理的电子邮件的格式时。