You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python的extract_msg模块读取邮件附件内容的问题求助

问题:Python extract_msg模块无法获取邮件附件内容

我用Python的extract_msg模块读取.msg邮件,能正常获取发件人、日期、主题、正文,但拿不到附件内容。打印attachments变量时,只显示Attachment对象列表,看不到实际内容。

我的代码:

import extract_msg
import glob
import re
f = glob.glob('Time Off -DAYS.msg')


for filename in f:
    msg = extract_msg.Message(filename)
    
    msg_from = msg.sender
    msg_date = msg.date
    msg_subj = msg.subject
    msg_message = msg.body
    attachments = msg.attachments
    msg_to = msg.to
print("To:-",msg_to)
print("From:-",msg_from)
print ("Date:-",msg.date)
print(attachments)

当前attachments输出(邮件含2个附件):

[<extract_msg.attachment.Attachment object at 0x0000024444C9FEF0>, <extract_msg.attachment.Attachment object at 0x0000024444E39C50>]


解决思路
  • Attachment对象不是直接内容:你看到的列表里是extract_msg.attachment.Attachment类的实例,需要调用它的属性和方法才能获取附件信息与内容。
  • 获取附件基础信息:每个Attachment对象自带filename(文件名)、fileExtension(文件后缀)、mime_type(MIME类型)等属性,可直接读取。
  • 提取/保存附件内容:
    • 调用attachment.save()方法可直接将附件保存到当前目录(或指定路径);
    • 若要直接读取附件的二进制内容,可访问attachment.content属性。

修改后的示例代码
import extract_msg
import glob

f = glob.glob('Time Off -DAYS.msg')

for filename in f:
    msg = extract_msg.Message(filename)
    
    # 打印邮件基础信息
    print("To:-", msg.to)
    print("From:-", msg.sender)
    print("Date:-", msg.date)
    print("Subject:-", msg.subject)
    
    # 处理附件
    print("\n=== 附件信息 ===")
    for idx, attachment in enumerate(msg.attachments, 1):
        # 获取附件基础信息
        print(f"附件{idx}:")
        print(f"文件名:{attachment.filename}")
        print(f"MIME类型:{attachment.mime_type}")
        
        # 保存附件到当前目录
        attachment.save()
        print(f"已保存附件:{attachment.filename}")
        
        # (可选)直接读取附件二进制内容
        # attachment_content = attachment.content
        # 可将content写入文件或做其他处理

内容的提问来源于stack exchange,提问作者mkpj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:25:26