我正在尝试阅读主题行为“自动化”的 Outlook 电子邮件,并使用自定义脚本进一步处理。下面的脚本读取带有主题行的电子邮件,但它会读取主题为“自动化”的全部电子邮件。
我希望能够只阅读最近的电子邮件并只处理特定的电子邮件内容并将电子邮件标记为未读。然后阅读下一封具有相同主题的新电子邮件,仅处理特定内容。
Add-type -assembly "Microsoft.Office.Interop.Outlook" | out-null
$olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$folder = $namespace.getDefaultFolder($olFolders::olFolderInBox)
$folder.items | where { $_.subject -match 'Automation' } | Select-Object -Property body
假设我有 10 封主题为“自动化”的新电子邮件处理第 10 封电子邮件并将其标记为已读并从 9 到 1 继续处理。
如何实现?
最佳答案
只需使用foreach-object
,您可以通过修改邮件项目的未读属性将邮件标记为已读/未读(https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._mailitem.unread.aspx)
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace("MAPI")
$folder=$namespace.GetDefaultFolder(6)
$folder.Items |
?{$_.subject -match "automation" } |
sort receivedtime -desc |
%{
echo $_.body #do stuff with body
$_.Unread=$false #mark as read
}
发表评论后,您可以验证您的 outlook 版本是否公开未读属性:
$folder.Items |select -first 1 |获取成员
你应该找到以下属性:
UnRead 属性 bool UnRead () {get} {set}
关于powershell - 使用 PowerShell 从 outlook 读取最近的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47345395/