конвертировать MSG в HTML без использования Outlook в PowerShell - PullRequest
0 голосов
/ 31 октября 2018

Я хочу конвертировать файлы msg (в локальной папке) в html в powershell. Я сделал это с помощью 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?

Спасибо за любую помощь

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Вам необходимо удалить параметр $ 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

0 голосов
/ 31 октября 2018

Чтобы было понятно, он отлично работал с обоими ответами и моим полным кодом в любом случае:

$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
0 голосов
/ 31 октября 2018

Второй параметр при вызове GetMessageFromMsgFile равен true, что означает, что вы создаете новый файл. Вместо этого передайте false.

Также обратите внимание, что GetMessageFromMsgFile не требует активного сеанса, поэтому нет необходимости вызывать RDOSession.Logon. И профиля не будет, если вы все равно работаете под пользователем службы.

Чтобы создать файл HTML, вам не нужно читать свойство RDOMail.HTMLBody. Вы можете позвонить RDOMail.SaveAs(..., olHTML).

...