将电子邮件正文保存到html文件powershell

时间:2018-04-03 17:32:18

标签: powershell

我正在尝试将一个充满MSG文件的文件夹转换为HTML文件。我有一个可以获得大部分内容的脚本,但不是在powershell中显示文本,而是需要将每个文件保存为单独的html文件。出于某种原因,我无法将保存工作。我尝试过各种选项,比如out-file和$ body.SaveAs([ref] [system.object] $ name,[ref] $ saveFormat)

$saveFormat = [Microsoft.Office.Interop.Outlook.olSaveAsType]::olFormatHTML
Get-ChildItem "C:\MSG\" -Filter *.msg |
    ForEach-Object {
        $body = ""
        $outlook = New-Object -comobject outlook.application
        $msg = $outlook.Session.OpenSharedItem($_.FullName)
        $body = $msg | Select body | ft -AutoSize
    }

关于如何将其保存为单个文件的任何建议都会很棒。

1 个答案:

答案 0 :(得分:0)

首先,您不应捕获变量中Format-* cmdlet的输出。这些设计用于输出某些内容(屏幕,文件等)。

好的,除此之外,您已经打开了msg文件,因此您只需要确定一个名称,然后输出每个文件的HTMLBody属性。最简单的方法是将.htm添加到现有名称的末尾。

Get-ChildItem "C:\MSG\*" -Filter *.msg |
    ForEach-Object {
        $body = ""
        $outlook = New-Object -comobject outlook.application
        $msg = $outlook.Session.OpenSharedItem($_.FullName)
        $OutputFile = $_.FullName+'.htm'
        $msg.HTMLBody | Set-Content $OutputFile
    }