如何从EML文件的邮件正文中提取所有电子邮件地址
从EML邮件正文中提取电子邮件地址的Python实现
我正在开展一个邮箱数据提取项目,目标是从邮件正文中提取所有包含的电子邮件地址,以下是实现该功能的Python脚本:
# Python script to extract email addresses from email messages / eml # Comment from JNevill solved the final bit import os import re from email import policy from email.parser import BytesParser # 切换到存放EML文件的共享目录 os.chdir(r"\\10.21.1.236\websites\vaccinatieplanner\mail\stroomz\onbezorgd") emaillist = [] # 遍历目录下所有邮件文件 for emailmessage in os.listdir(): with open(emailmessage, 'rb') as em: # 解析EML文件 msg = BytesParser(policy=policy.default).parse(em) # 优先提取纯文本正文,无纯文本则提取HTML正文 emailmsgraw = msg.get_body(preferencelist=('plain', 'html')) emailmsg = emailmsgraw.get_content() # 正则匹配所有邮箱地址并加入列表 emaillist.extend(re.findall(r'[\w.+-]+@[\w-]+\.[\w.-]+', emailmsg)) # 输出所有提取到的邮箱地址 print(emaillist)
脚本说明
- 依赖Python标准库完成解析,无需额外安装第三方包
- 优先读取纯文本正文,减少HTML标签对提取结果的干扰
- 正则表达式支持包含下划线、点、加号、减号的常见邮箱格式
- 批量处理指定目录下的所有EML文件,自动汇总提取到的邮箱地址
内容的提问来源于stack exchange,提问作者Sneil
相关产品推荐
相关产品推荐

