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

如何批量将文件夹内的Outlook MSG文件内容导出为CSV文件

批量导出Outlook MSG文件信息到CSV的实现方案

200个文件的量级处理成本极低,以下方案全程无需手动打开单封邮件操作,单批次运行耗时不超过1分钟。


方案1:Windows环境无额外依赖(推荐,解析准确率100%)

该方案调用桌面版Outlook原生COM接口解析MSG,不会出现编码识别错误、格式错乱问题,只要系统已安装配置好桌面版Outlook即可使用。
操作步骤:

  • 将所有MSG文件统一放入单独文件夹,例如路径为C:\MailExport\msg_files
  • 在文件夹内新建文本文件,将后缀改为.ps1,命名为Export-MsgToCsv.ps1
  • 将以下代码粘贴到文件中,替换为你自己的文件夹路径后保存:
$outlook = New-Object -ComObject Outlook.Application
$msgFolder = "C:\MailExport\msg_files" # 替换为实际MSG存放路径
$outputCsv = "C:\MailExport\mails_export.csv" # 替换为CSV输出路径
$mails = @()

Get-ChildItem -Path $msgFolder -Filter "*.msg" | ForEach-Object {
    $mail = $outlook.Session.OpenSharedItem($_.FullName)
    $mails += [PSCustomObject]@{
        FileName = $_.Name
        Subject = $mail.Subject
        SenderEmail = $mail.SenderEmailAddress
        SenderName = $mail.SenderName
        ToRecipients = $mail.To
        CcRecipients = $mail.CC
        BccRecipients = $mail.BCC
        SendTime = $mail.SentOn
        ReceiveTime = $mail.ReceivedTime
        PlainTextBody = $mail.Body
        HtmlBody = $mail.HTMLBody
        AttachmentCount = $mail.Attachments.Count
    }
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($mail) | Out-Null
}

$mails | Export-Csv -Path $outputCsv -Encoding UTF8 -NoTypeInformation
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
Write-Host "导出完成,共处理 $($mails.Count) 封邮件,文件已保存至 $outputCsv"
  • 右键点击该ps1文件,选择「使用PowerShell运行」,等待执行完成即可拿到目标CSV文件。
    注意:脚本运行时不要操作Outlook界面,避免接口调用中断。

方案2:跨平台无Outlook依赖方案(Python实现)

如果使用Mac/Linux系统,或本地未安装桌面版Outlook,可以用Python第三方库解析MSG文件,无需依赖Office组件。
操作步骤:

  • 打开终端/命令提示符,执行命令安装依赖:pip install extract-msg pandas
  • 新建py后缀的脚本文件,粘贴以下代码,替换对应路径后运行:
import os
import pandas as pd
import extract_msg

msg_folder = r"/path/to/your/msg/files" # 替换为MSG存放路径
output_csv = r"/path/to/your/output/mails_export.csv" # 替换为CSV输出路径

mail_list = []
for file_name in os.listdir(msg_folder):
    if file_name.lower().endswith(".msg"):
        file_path = os.path.join(msg_folder, file_name)
        with extract_msg.openMsg(file_path) as msg:
            mail_list.append({
                "FileName": file_name,
                "Subject": msg.subject,
                "Sender": msg.sender,
                "ToRecipients": msg.to,
                "CcRecipients": msg.cc,
                "SendTime": msg.date,
                "PlainTextBody": msg.body,
                "AttachmentCount": len(msg.attachments)
            })

df = pd.DataFrame(mail_list)
df.to_csv(output_csv, index=False, encoding="utf-8-sig")
print(f"导出完成,共处理{len(mail_list)}封邮件")
  • 脚本运行完成后即可在指定路径得到CSV文件,utf-8-sig编码可保证Excel打开中文内容无乱码。

常见问题说明

  • 若导出正文出现乱码:优先使用方案1的原生Outlook解析,第三方开源库对特殊编码、多语种邮件的识别准确率低于官方接口。
  • 若需要同步提取附件:两个方案都可扩展附件保存逻辑,200个文件量级无需额外做性能优化,顺序处理即可稳定运行。
  • 若CSV打开后换行错乱:不要直接双击打开文件,通过Excel的「数据-自文本/CSV」功能选择UTF-8编码导入即可正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:06:32