使用COM对象(MAPI)清除Outlook客户端上的邮箱

时间:2016-06-29 11:46:39

标签: powershell outlook

$outlook = New-Object -ComObject Outlook.Application;
$ns = $outlook.GetNameSpace("MAPI"); 
$inbox = $ns.GetDefaultFolder($olFolderInbox);
$items = $olFolderInbox.items

foreach ($item in $items)
{
$olfolderinbox.Items | % {$_.delete()}

我只需要一些代码作为计划任务运行,以定期删除某些Outlook客户端邮箱的收件箱/已删除邮件,以免累积数据

当我运行上面的时候,我得到`值不在预期的范围内,我有删除子文件夹的代码,只是上面的东西不正确,我很难看到它是什么。任何人都可以帮忙吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

请参阅example here,您会错过一些代码。

您的代码中

$olFolderInbox$null,一旦您正确初始化$inbox.Items,就会在$olFolderInbox集合中找到项目。

你应该试试这个:

$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNameSpace("MAPI")

$olFolderInbox = [Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox
$inbox = $namespace.GetDefaultFolder($olFolderInbox)
for($item = $inbox.Items.Count; $item -ge 1; $item--) {
    $inbox.Items.Item($item).Delete()
}

#to empty deleted items
$olFolderTrash = [Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderDeletedItems
$trash = $namespace.GetDefaultFolder($olFolderTrash)
for($item = $trash.Items.Count; $item -ge 1; $item--) {
    $trash.Items.Item($item).Delete()
}

$outlook.Quit()