在powershell中不使用outlook将msg转换为html

在powershell中不使用outlook将msg转换为html,powershell,outlook,outlook-redemption,msg,Powershell,Outlook,Outlook Redemption,Msg,我想在powershell中将msg文件(在本地文件夹中)转换为html。我使用outlook完成了这项工作,但问题是此脚本将在服务器上运行,因此我无法使用outlook。 到目前为止,我搜索了以下问题: 我找不到很多使用Powershell的方法。然而,在上述问题的帮助下,我下载了Redemption,并像这样使用它: $routlook = New-Object -COM Redemption.RDOSession $routlook.Logon() $msg = $routloo

我想在powershell中将msg文件(在本地文件夹中)转换为html。我使用outlook完成了这项工作,但问题是此脚本将在服务器上运行,因此我无法使用outlook。 到目前为止,我搜索了以下问题:

我找不到很多使用Powershell的方法。然而,在上述问题的帮助下,我下载了Redemption,并像这样使用它:

$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


感谢您的帮助

当您调用
GetMessageFromMsgFile
时,第二个参数为true,这意味着您正在创建一个全新的文件。改为传递false

另外请注意,
getmessagefromsgfile
不需要活动会话,因此无需调用
RDOSession.Logon
。而且,如果您在服务用户下运行,则不会有配置文件


要创建HTML文件,不需要读取
RDOMail.HTMLBody
属性。您可以调用
RDOMail.SaveAs(…,olHTML)

调用
GetMessageFromMsgFile
时的第二个参数为true,这意味着您正在创建一个全新的文件。改为传递false

另外请注意,
getmessagefromsgfile
不需要活动会话,因此无需调用
RDOSession.Logon
。而且,如果您在服务用户下运行,则不会有配置文件


要创建HTML文件,不需要读取
RDOMail.HTMLBody
属性。您可以调用
RDOMail.SaveAs(…,olHTML)

您需要删除$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,您需要删除$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,以明确说明,无论哪种方式,它都可以与答案和我的完整代码配合使用:

$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",$FALSE)
$name = "test.html"
$path = $location + $name
$msg.SaveAs($path,5)


我们说的是outlook msg文件吗?是的,我正在尝试outlook msg文件。您只是在尝试恢复文本还是什么?您可以在这里找到MS-OXMG标准。我正在尝试获取邮件的正文内容并将其转换为html文件$msg.HTMLBody按照我的要求创建了一个html文件,但正文部分没有任何内容。我们是在谈论outlook msg文件吗?是的,我正在尝试对outlook msg文件执行此操作。您只是在尝试恢复文本还是什么?您可以在此处找到MS-OXMSG标准。我正在尝试获取邮件正文内容并将其转换为html文件$msg.HTMLBody按照我的要求创建了一个html文件,但正文部分没有任何内容。谢谢你的回答。我试过了,但创建的html文件没有任何html标记,只包含这类内容:我只是检查了一下,发现这是我的错误,我传递了无效的olHTML变体。很抱歉,它也适用于您的解决方案。谢谢你的回答。我试过了,但创建的html文件没有任何html标记,只包含这类内容:我只是检查了一下,发现这是我的错误,我传递了无效的olHTML变体。很抱歉,它也适用于您的解决方案。谢谢,这帮了大忙!它创建了一个适当的html文件。谢谢,这帮了大忙!它创建了一个适当的html文件。谢谢