PowerShell -在回复中添加电子邮件分隔符

wz1wpwve  于 2023-04-12  发布在  Shell
关注(0)|答案(1)|浏览(226)

尝试使用PowerShell回复电子邮件。脚本工作正常。但原始电子邮件和我的回复之间没有电子邮件分隔符(灰色线)。下面是我的代码。

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
Add-type -assembly "System.Runtime.Interopservices"

try
{
$outlook = [Runtime.Interopservices.Marshal]::GetActiveObject('Outlook.Application')
    $outlookWasAlreadyRunning = $true
}
catch
{
    try
    {
        $Outlook = New-Object -comobject Outlook.Application
        $outlookWasAlreadyRunning = $false
    }
    catch
    {
        write-host "You must exit Outlook first."
        exit
        
    }
}

$namespace = $Outlook.GetNameSpace("MAPI")

$inbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)

$mails = $inbox.Items | Where-Object {$_.Subject -like "ABC TEST*"}

$mailsbody = $mails | Select-Object -Property Body | Format-List

$text = "Test Body"

foreach($mail in $mails) {
    $reply = $mail.reply()
    $reply.body = $reply.body.Insert(0, $text) + [Environment]::NewLine
    $reply.send()
    while(($namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderOutbox)).Items.Count -ne 0) {
        Start-Sleep 1
    }
}

# Kill Process Outlook (close COM)
Get-Process "*outlook*" | Stop-Process –force

u3r8eeie

u3r8eeie1#

body属性返回一个没有任何格式的纯文本字符串:

$reply.body = $reply.body.Insert(0, $text) + [Environment]::NewLine

如果您需要/想要保留现有的格式,您需要使用HTMLBody属性。您可以将新内容粘贴到开始的<body>和结束的</body> HTML标签中。
我还注意到下面的代码检查了集合中每个项目的Subject属性:

$mails = $inbox.Items | Where-Object {$_.Subject -like "ABC TEST*"}

而不是迭代Outlook文件夹中的所有项目,您需要使用Items类的Find/FindNextRestrict方法。在我为技术博客撰写的文章中阅读有关这些方法的更多信息:

相关问题