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

求可在Linux/Ubuntu运行的Python代码提取.msg文件PDF/PNG附件

提取.msg文件附件的跨平台Python实现

由于pywin32仅支持Windows,推荐使用跨平台的extract_msg库来处理.msg文件,它能在Linux/Ubuntu环境下正常运行。

步骤1:安装依赖

在终端执行以下命令安装库:

pip install extract-msg

步骤2:编写提取代码

创建Python脚本(比如extract_msg_attachments.py),代码如下:

import os
from extract_msg import Message

def extract_attachments_from_msg(msg_folder, output_base_folder):
    os.makedirs(output_base_folder, exist_ok=True)
    
    for filename in os.listdir(msg_folder):
        if not filename.lower().endswith('.msg'):
            continue
            
        msg_path = os.path.join(msg_folder, filename)
        msg_name = os.path.splitext(filename)[0]
        output_folder = os.path.join(output_base_folder, msg_name)
        os.makedirs(output_folder, exist_ok=True)
        
        try:
            msg = Message(msg_path)
            for attachment in msg.attachments:
                ext = os.path.splitext(attachment.filename)[1].lower()
                if ext in ('.pdf', '.png'):
                    save_path = os.path.join(output_folder, attachment.filename)
                    with open(save_path, 'wb') as f:
                        f.write(attachment.data)
                    print(f"提取成功: {attachment.filename} -> {output_folder}")
        except Exception as e:
            print(f"处理 {filename} 失败: {str(e)}")

# 替换为你的实际路径
SOURCE_FOLDER = "/home/your-user/main-folder"
DEST_FOLDER = "/home/your-user/extracted-attachments"

if __name__ == "__main__":
    extract_attachments_from_msg(SOURCE_FOLDER, DEST_FOLDER)

使用说明

  1. 将SOURCE_FOLDER替换为存放.msg文件的主文件夹路径,DEST_FOLDER替换为附件输出路径。
  2. 在终端运行脚本:
python extract_msg_attachments.py

注意事项

  • 脚本会为每个.msg文件创建独立的子文件夹保存对应附件,避免文件名冲突。
  • 不支持加密或损坏的.msg文件,遇到此类文件会输出错误提示。
  • 若遇到编码相关问题,可尝试升级extract_msg到最新版本:pip install --upgrade extract_msg

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:15