powershell - 使用 PowerShell 从 outlook 读取最近的电子邮件

标签 powershell outlook

我正在尝试阅读主题行为“自动化”的 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/

相关文章:

json - 更正json以将父链接添加到TFS工作项

powershell - 如何写回使用通配符路径读取的同一文件?

powershell - 通过 Powershell 将扩展属性添加到 Azure Active Directory 用户

powershell Get-VM 名称不一样

c# - 使用 Graph API 时出现 "The tenant for tenant guid does not exist"- 用户类型为成员(member)的事件

asp.net - 在 ASP.NET 中使用 MAPI 读取 oulook 时出错

c# - HTML 在 outlook 2007 电子邮件中显示不正确?

azure - 如何从 azure Devops 管道运行 powershell 命令到本地远程服务器

html - 让 Outlook 尊重 margin-top : 0px on body of an email?

html - 行高在 HTML 电子邮件的 Outlook 2010 中不起作用