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

使用Python下载带附件的Outlook .msg格式邮件可行吗?

可以用Python将带附件的Outlook邮件保存为单个.msg文件

完全可以实现,通过调用Outlook的COM接口直接保存原生.msg文件,该格式会自动包含邮件内容和所有附件,生成单个文件。以下是具体实现方案:

方法:使用pywin32操作Outlook COM对象

pywin32库可以直接与Windows系统上的Outlook客户端交互,调用邮件对象的原生SaveAs方法即可保存包含附件的.msg文件。

步骤1:安装依赖

pip install pywin32

步骤2:示例代码

import win32com.client
import os

def save_email_with_attachments_as_msg(mail_item, save_dir):
    # 处理邮件主题中的非法字符,避免路径报错
    safe_subject = mail_item.Subject.replace('/', '_').replace('\\', '_').replace(':', '_').replace('*', '_').replace('?', '_').replace('"', '_').replace('<', '_').replace('>', '_').replace('|', '_')
    save_path = os.path.join(save_dir, f"{safe_subject}.msg")
    # olMSG 对应常量3,指定保存为MSG格式
    mail_item.SaveAs(save_path, 3)
    return save_path

# 初始化Outlook应用
outlook_app = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 获取目标文件夹(示例为收件箱,6是收件箱的常量值)
target_folder = outlook_app.GetDefaultFolder(6)

# 遍历邮件并保存(示例筛选带附件的邮件)
for mail in target_folder.Items:
    if mail.Attachments.Count > 0:
        saved_path = save_email_with_attachments_as_msg(mail, "C:/Outlook_Saved_Mails")
        print(f"带附件的邮件已保存至: {saved_path}")
        # 可根据需求修改为遍历所有邮件或指定条件筛选
        break

关键说明

  • 该方法依赖本地安装的Outlook客户端,因为需要调用其COM服务
  • 保存的.msg文件是Outlook原生格式,打开后可直接查看邮件内容和所有附件,无需分开存储
  • 首次运行时Outlook可能会弹出权限验证窗口,需允许程序访问邮件数据
  • 代码中处理了邮件主题的非法字符,避免因路径包含特殊字符导致保存失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:35:16