Skip to main content
 首页 » 编程设计

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

2025年05月04日61zengkefu

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

收件人:Tom@mail.com

发件人:Joe@test.com

主题:确认你的考试成绩

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

已签名

乔 (部分Joes签名有图) 图片的网址是 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()) 

请您参考如下方法:

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

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

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