无法使用 Powershell 通过 MAPI 将 Outlook 电子邮件未读 属性 设置为 false

Unable to set Outlook email UnRead property to false via MAPI with Powershell

我似乎无法通过 MAPI 将更改写入 Outlook,如果您 Write-Output 它,但变量似乎并未操纵实际的 .PST 文件。 select 生成正确的电子邮件,因此可以读取 .PST 的权限。

这是我用来从 PST 文件夹中检索未读电子邮件列表并将其中一个设置为已读的代码:

$Outlook = new-object -comobject "Outlook.Application";
$Mapi = $Outlook.getnamespace("mapi");
$Pst = $Mapi.Folders.Item("Personal Folders")
$Folder = $Pst.Folders.Item("Test")
$Emails = $Folder.Items | Select UnRead, SenderEmailAddress, Subject, ReceivedTime, Body | Where {$_.Unread -eq "True"}

$Emails[1].UnRead = $false

我见过的大多数例子都说要将变量放在方括号中,例如

$($Emails)[1].UnRead = $false

但这对我来说没有任何影响。

有趣的是,当我尝试使用 .delete() 时,我也遇到了 'method not found' 错误,因此我想我一定遗漏了一些东西。

非常感谢您的任何建议。

呼叫MailItem.Save.

不要遍历文件夹中的所有项目,使用 Items.Find/FindNext 或 Items.Restrict.

您已更改 属性 您自己的对象,但不是在邮件服务器上