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

如何使用PowerShell将HTML邮件转换为MSG文件?

使用PowerShell将ZIP中的HTML邮件转换为.msg文件

整体流程

先解压ZIP文件提取HTML内容和可选附件,再通过Outlook的COM组件创建邮件对象、导入HTML正文、添加附件,最后保存为.msg格式。


1. 解压ZIP文件

用PowerShell内置命令即可完成解压,无需额外工具:

# 定义ZIP路径和临时解压目录
$zipPath = "C:\path\to\your\email.zip"
$extractPath = "C:\temp\email_extract"

# 解压ZIP,若目录已存在则覆盖原有内容
Expand-Archive -Path $zipPath -DestinationPath $extractPath -Force

2. 生成.msg文件

借助Outlook COM对象创建邮件,导入HTML内容并处理附件:

# 初始化Outlook应用实例
$outlook = New-Object -ComObject Outlook.Application

# 创建新邮件对象(0对应olMailItem类型)
$mailItem = $outlook.CreateItem(0)

# 读取HTML文件内容并设置为邮件正文
$htmlFile = Get-ChildItem -Path $extractPath -Filter "*.html" | Select-Object -First 1
if ($htmlFile) {
    $htmlContent = Get-Content -Path $htmlFile.FullName -Raw
    $mailItem.HTMLBody = $htmlContent
}

# 添加目录中的非HTML文件作为附件
$attachments = Get-ChildItem -Path $extractPath | Where-Object { $_.Name -ne $htmlFile.Name }
foreach ($att in $attachments) {
    $mailItem.Attachments.Add($att.FullName)
}

# 保存为.msg格式(3对应olMSG枚举值)
$savePath = "C:\path\to\output\email.msg"
$mailItem.SaveAs($savePath, 3)

# 释放COM对象,避免内存泄漏
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($mailItem) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($outlook) | Out-Null
Remove-Variable outlook, mailItem

注意事项

  • 需确保本地安装了Microsoft Outlook,且PowerShell有足够权限访问Outlook组件
  • 若运行时弹出Outlook安全提示,可在Outlook设置的「信任中心」调整程序访问权限
  • 临时解压目录可自行指定,处理完成后可通过Remove-Item -Path $extractPath -Recurse -Force清理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:35:34