python - 从电子邮件下载的 Reg Ex URL 不适用于某些 url
问题描述
我想要做的是使用 python 使用 pop3 协议下载电子邮件,在 whgole 上它工作正常,我能够解析电子邮件中的所有 url,除了 1 类型:
def pop3_downloader(username, password, pop3server, port, use_ssl):
try:
server = ''
if use_ssl == "no":
server = poplib.POP3(pop3server, port)
elif use_ssl == "yes":
server = poplib.POP3_SSL(pop3server, port)
else:
pass
server.user(username)
server.pass_(password)
numMessages = len(server.list()[1])
print("--> # Of Messages: " + str(numMessages))
email_container = []
for i in range(numMessages) :
(server_msg, body, octets) = server.retr(i+1)
for j in body:
try:
msg = email.message_from_string(j.decode("utf-8"))
email_body = msg.get_payload()
email_extract_urls = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', email_body)
if len(email_extract_urls) > 0:
#activation_links = "/activate/|registration.activate&token="
#if any(s in email_extract_urls for s in activation_links.split('|')):
email_container.append(email_extract_urls)
except:
pass
#server.dele(i+1)
server.quit()
return email_container
except Exception as e:
print_exception()
以上是我当前的代码,未提取的电子邮件 url 类型是:
http://thesite.com/index.php?option=com_users&task=registration.activate&token=xxxxxxxxxxxxxxxxxxxxxx
我的正则表达式只是忽略了这个结构,但提取了所有其他类型,我在这里做错了吗?我已经测试了一些我在各个网站上找到的,但它们似乎都失败了。
任何帮助表示赞赏。
解决方案
推荐阅读
- reactjs - useRef() 而不是仅仅声明一个变量有什么好处?
- symfony - 带有 gitlab-ci 的 Phpstan 找不到 srcApp_KernelDevDebugContainer.xml,因为它在 gitignore 中?
- date - 谷歌脚本 - 日期错误的月份
- vba - 使用 VBA 在 MS Word 中组合富文本内容控件内容
- loops - 使用 DO 循环来简化重复的代码
- c# - 将多个 csv 文件的内容保存到可搜索的数组 C#
- azure - 如何解决“指定的 blob 不存在。HTTP 状态代码:使用 Start-AzStorageBlobCopy 时出现 404 错误
- unit-testing - 如何以几乎 100% 的覆盖率对此类进行单元测试?
- javascript - 通过动画从高度 0 到高度 100%
- postgresql - 使用 Postgres 排除约束限制匹配特定条件的表行数?