我想将msg文件(在本地文件夹中)转换为powershell中的html。我已经通过使用Outlook做到了这一点,但问题是此脚本将在服务器上运行,所以我无法使用Outlook。 到目前为止,我已经搜索了以下问题:
我无法使用Powershell找到许多方法。但是,在上述问题的帮助下,我下载了赎回并像这样使用它:
$routlook = New-Object -COM Redemption.RDOSession
$routlook.Logon()
$msg = $routlook.GetMessageFromMsgFile("C:\temp\test.msg",$TRUE)
$path = "C:\temp\test.html"
$msg.HTMLBody | Set-Content $path
但是$ msg.HTMLBody只会在下面返回一个空的html,而$ msg.Body则不会返回任何内容:
<HTML>
<HEAD><META http-equiv=Content-Type content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
</BODY></HTML>
可能我以错误的方式使用“兑换”,并且不知道如何解决它。还是有其他第三方解决方案可用于服务器而不是Outlook?
感谢您的帮助
答案 0 :(得分:2)
您需要删除 $ TRUE 参数:
$routlook = New-Object -COM Redemption.RDOSession
$routlook.Logon()
$msg = $routlook.GetMessageFromMsgFile("C:\temp\test.msg")
$path = "C:\temp\test.html"
$msg.HTMLBody | Set-Content $path
您可以打开您的msg文件,然后将其另存为html
答案 1 :(得分:1)
调用GetMessageFromMsgFile
时的第二个参数为true,表示您正在创建一个全新的文件。改为传递false。
还请注意,GetMessageFromMsgFile
不需要活动的会话,因此无需调用RDOSession.Logon
。如果您仍然在服务用户下运行,则不会有配置文件。
要创建HTML文件,您无需阅读RDOMail.HTMLBody
属性。您可以致电RDOMail.SaveAs(..., olHTML)
。
答案 2 :(得分:1)
为了清楚起见,无论哪种方式,它在回答和我的完整代码上都可以正常工作:
$routlook = New-Object -COM Redemption.RDOSession
$location = "C:\temp\Redemption\"
$msg = $routlook.GetMessageFromMsgFile("C:\temp\test.msg",$FALSE)
$name = "test.html"
$path = $location + $name
$msg.SaveAs($path,5)
或
$routlook = New-Object -COM Redemption.RDOSession
$location = "C:\temp\Redemption\"
$msg = $routlook.GetMessageFromMsgFile("C:\temp\test.msg")
$name = $_.Name + ".html"
$path = $location + $name
$msg.HTMLBody | Set-Content $path