尝试使用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
1条答案
按热度按时间u3r8eeie1#
body属性返回一个没有任何格式的纯文本字符串:
如果您需要/想要保留现有的格式,您需要使用HTMLBody属性。您可以将新内容粘贴到开始的
<body>
和结束的</body>
HTML标签中。我还注意到下面的代码检查了集合中每个项目的
Subject
属性:而不是迭代Outlook文件夹中的所有项目,您需要使用
Items
类的Find
/FindNext
或Restrict
方法。在我为技术博客撰写的文章中阅读有关这些方法的更多信息: