求可在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)
使用说明
- 将
SOURCE_FOLDER替换为存放.msg文件的主文件夹路径,DEST_FOLDER替换为附件输出路径。 - 在终端运行脚本:
python extract_msg_attachments.py
注意事项
- 脚本会为每个.msg文件创建独立的子文件夹保存对应附件,避免文件名冲突。
- 不支持加密或损坏的.msg文件,遇到此类文件会输出错误提示。
- 若遇到编码相关问题,可尝试升级
extract_msg到最新版本:pip install --upgrade extract_msg
内容的提问来源于stack exchange,提问作者codette
相关产品推荐
相关产品推荐

