2

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

收件人:Tom@mail.com

来自:Joe@test.com

主题:确认你的考试成绩

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

Joe(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())
4

1 回答 1

0

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

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

甚至有人就此写了一篇论文——这非常困难,尤其是当您无法控制所处理电子邮件的格式时。

于 2012-08-14T21:02:28.530 回答