【问题标题】:convert msg to html without using outlook in powershell在 powershell 中不使用 Outlook 将 msg 转换为 html
【发布时间】:2019-04-04 02:51:36
【问题描述】:

我想在 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>

可能我以错误的方式使用 Redemption 并且不知道如何解决它。或者是否有任何其他可以在服务器中使用而不是使用 Outlook 的 3rd 方解决方案?

感谢您的帮助

【问题讨论】:

  • 我们说的是 Outlook 消息文件吗?
  • 是的,我正在为 Outlook msg 文件尝试此操作。
  • 你只是想恢复文本还是什么?
  • 您可以在这里找到 MS-OXMSG 标准link
  • 我正在尝试获取邮件的正文内容并将其转换为 html 文件。 $msg.HTMLBody 如我所愿创建一个 html 文件,但正文部分没有任何内容。

标签: powershell outlook outlook-redemption msg


【解决方案1】:

调用GetMessageFromMsgFile时的第二个参数为true,表示你正在创建一个全新的文件。改为传递 false。

还要注意GetMessageFromMsgFile 不需要活动会话,因此无需调用RDOSession.Logon。无论如何,如果您在服务用户下运行,则不会有配置文件。

要创建 HTML 文件,您无需阅读 RDOMail.HTMLBody 属性。您可以拨打RDOMail.SaveAs(..., olHTML)

【讨论】:

  • 感谢您的回答。我试过了,但是创建的 html 文件没有任何 html 标签,并且只包含这种东西:ÐÏࡱá ÿÿÿÿ
  • 我刚刚检查了一下,发现这是我的错误,我传递了 olHTML 的无效变体。抱歉,它也适用于您的解决方案。谢谢
【解决方案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

【讨论】:

  • 是的,这很有帮助!它创建了一个适当的 html 文件。谢谢
【解决方案3】:

为了清楚起见,无论是答案还是我的完整代码都可以正常工作:

$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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-17
    • 2016-08-25
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2021-09-05
    • 2023-03-14
    相关资源
    最近更新 更多