使用 powershell 查找 Outlook 收件箱中所有“未送达”的电子邮件

使用 powershell 查找 Outlook 收件箱中所有“未送达”的电子邮件

我需要使用 powershell 递归查询我的收件箱中所有“未送达的电子邮件返回者”......

我对递归部分有问题......

这是我运行的脚本:

$outlook = new-object -com Outlook.Application
$ns = $olApp.GetNamespace("MAPI")
$mb = $namespace.Folders | ?{$_.name -match "mailbox"}   
$folder1 = $mb.Folders | ?{$_.name -match "folder1"}   
$folder1.Folders | %{$_.name}  

$folder1.items | foreach {
if($_.subject -match "undelivered") {...}
}

但是,这并没有递归列出所有项目。

答案1

这是一个简短的脚本,应该可以帮到你。它遍历邮箱中的所有文件夹并输出它们的路径。你可以更新递归部分中完成的工作,以检查每个文件夹中经过的项目。

$outlook = New-Object -Com Outlook.Application
$mapi = $outlook.GetNamespace('MAPI')
$mailboxRoot = $mapi.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox).Parent
$walkFolderScriptBlock = {
    param(
        $currentFolder
    )
    foreach ($item in $currentFolder.Folders) {
        $item.FolderPath
        & $walkFolderScriptBlock $item
    }
}
& $walkFolderScriptBlock $mailboxRoot

相关内容