python进行邮件文件.eml.pst.msg信息提取(包括附件)

这篇博客介绍了如何使用Python解析eml、pst和msg文件以提取邮件信息。对于eml文件,利用eml_parser模块获取正文、标题、收件人和发件人信息,并提取附件。pst文件在Linux上通过readpst转换为eml文件后再处理。msg文件的处理方法也类似,但提取Unicode编码msg文件的方法尚未找到。
摘要由CSDN通过智能技术生成

eml文件

解析eml文件使用了eml_parser模块

安装:

pip install eml_parser

使用:

  1. 获得eml实例
import eml_parser
with open("eml文件的路径",'rb') as f:
    a=f.read()
eml = eml_parser.eml_parser.decode_email_b(a,True,True)
#decode_email_b方法
#第一个参数是eml文件二进制读出来的内容
#第二个参数表示邮件解析返回的数据结构里是否包含邮件的原始内容,也就是html内容,我这里选True,这样内容可以直接放到网页中显示。
#第三个参数表示解析返回的数据结构中是否包含附件内容。
  1. 邮件正文部分提取
    eml[“body”]是一个列表,列表里每一项按显示类型分,这里我选择获得了text/html类型的正文文本
for i in eml["body"]:
    #text/html是带html标签,可以直接放到网页里面展示    
    #还有类型text/plain,正文部分的文字信息
    if i["content_type"] == "text/html":   
        #下两行是对html样式进行了调整以适配前端显示,可自行调整
        body = i["content"].replace('\n','').replace('position:absolute;','')              
        body = re.sub('body\s*{.*?}', '', body)        
        break

3.邮件标题、收件人、发件人信息

title = eml["header"]["subject"]
reciver = 
  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python3中,可以使用`imaplib`库来下载.eml文件附件。`imaplib`是Python标准库中用于实现IMAP(Internet Mail Access Protocol,互联网邮件访问协议)客户端的模块。 首先,需要连接到邮箱的IMAP服务器,并进行身份验证。可以使用`IMAP4_SSL`类来建立一个安全的连接。具体代码如下: ```python import imaplib # 连接到邮箱服务器 mail = imaplib.IMAP4_SSL('mail.example.com') # 登录邮箱账号 mail.login('username', 'password') ``` 接下来,可以使用`select()`方法选择邮箱中的某个文件夹(比如"Inbox")来获取邮件。然后,可以使用`search()`方法来搜索包含.eml文件附件邮件。找到匹配的邮件后,可以使用`fetch()`方法来获取附件的内容,并保存为文件。具体代码如下: ```python # 选择Inbox文件夹 mail.select('Inbox') # 搜索包含附件邮件 result, data = mail.search(None, 'ALL') mail_ids = data[0].split() # 遍历每封邮件 for mail_id in mail_ids: # 获取邮件的内容 result, data = mail.fetch(mail_id, '(RFC822)') raw_email = data[0][1] # 保存.eml文件 with open(f'{mail_id}.eml', 'wb') as f: f.write(raw_email) ``` 最后,使用`close()`方法关闭与IMAP服务器的连接。完整代码如下: ```python import imaplib # 连接到邮箱服务器 mail = imaplib.IMAP4_SSL('mail.example.com') # 登录邮箱账号 mail.login('username', 'password') # 选择Inbox文件夹 mail.select('Inbox') # 搜索包含附件邮件 result, data = mail.search(None, 'ALL') mail_ids = data[0].split() # 遍历每封邮件 for mail_id in mail_ids: # 获取邮件的内容 result, data = mail.fetch(mail_id, '(RFC822)') raw_email = data[0][1] # 保存.eml文件 with open(f'{mail_id}.eml', 'wb') as f: f.write(raw_email) # 关闭与IMAP服务器的连接 mail.close() mail.logout() ``` 请将上述代码中的 `'mail.example.com'`、`'username'`和`'password'`替换为您实际的邮箱服务器地址、用户名和密码。 使用以上代码,就可以下载.eml文件附件了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值