Powershell-Outlook将所有邮件标记为已读,然后删除

雷米·范·图尔

在尝试解决这一问题时遇到了一些问题。由于某种原因,我的脚本无法正常工作。

它应将收件箱文件夹中的所有邮件标记为已读,然后将其删除。但是,当脚本运行时,它只会删除.count $ emails显示的一半...

如何解决这个问题,我是在做错什么吗?

$outlook = new-object -comobject outlook.application

#Define folders
$namespace = $outlook.GetNameSpace("MAPI")
$pst = $namespace.Stores
$pstRoot = $pst.GetRootFolder()
$pstFolders = $pstRoot.Folders
#$personal = $pstFolders.Items("ARCHIVE")  ##Not working, sadly.
$DefaultFolder = $namespace.GetDefaultFolder(6)
$InboxFolders = $DefaultFolder.Folders
$DeletedItems = $namespace.GetDefaultFolder(3)
$Emails = $DefaultFolder.Items

Foreach ($Email in $Emails) {
#Define folders
$Email.UnRead = $false
$Email.Move($DeletedItems) | out-null
continue
}
疯狂技术员

我建议使用MailItem.Delete()方法,而不是将其移动到Deleted Items文件夹中。在Delete()方法页面上:

删除方法集合中删除单个项目。要删除文件夹“项目”集合中的所有项目,必须删除每个项目(从文件夹中的最后一个项目开始)。例如,在文件夹AllItems的项目集合中,如果该文件夹中有n个项目,则开始在AllItems.Item(n)处删除该项目,每次都减小索引,直到删除AllItems.Item(1)。

删除方法从包含文件夹移动项目到已删除项目文件夹。如果包含的文件夹是“已删除邮件”文件夹,则Delete方法将永久删除该项目。

有了这些知识,我建议用以下内容替换您的ForEach循环:

For($i=($emails.count-1);$i -ge 0;$i--){
    $($emails)[$i].Unread = $false
    $($emails)[$i].delete()
}

我不明白为什么要对集合进行子表达式以进行枚举,但是如果不这样做,我将永远无法指定记录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Powershell-Outlook将所有邮件标记为已读,然后删除

来自分类Dev

Outlook中是否有“将所有邮件标记为已读”的快捷方式?

来自分类Dev

VBA Outlook自动将文件夹中的所有电子邮件标记为已读

来自分类Dev

Windows 10默认邮件应用-如何将所有未读标记为已读?

来自分类Dev

powershell 查找所有组的所有用户标记为已禁用

来自分类Dev

在Outlook中删除时标记为已读?

来自分类Dev

Gmail REST API-将邮件标记为已读

来自分类Dev

如何将邮件项目标记为已读?

来自分类Dev

Gmail REST API-将邮件标记为已读

来自分类Dev

fdm和msmtp:将邮件标记为已读

来自分类Dev

如何将邮件项目标记为已读?

来自分类Dev

日历和联系人-如何将所有标记为已读

来自分类Dev

如何在一次更新中将通过EWS提取的所有电子邮件标记为已读?

来自分类Dev

如何使Microsoft Outlook 2013在单击邮件时将其自动标记为已读?

来自分类Dev

在Microsoft Outlook 2016中,立即将新电子邮件标记为已读

来自分类Dev

移动Outlook邮件Powershell

来自分类Dev

将SMS消息标记为已读/未读或删除在KitKat中不起作用的消息

来自分类Dev

等待邮件发送,然后在PowerShell中将其从已发送文件夹中删除

来自分类Dev

等待邮件发送,然后在PowerShell中将其从已发送文件夹中删除

来自分类Dev

我有一个Outlook 2007规则,该规则将某些传出邮件复制到另一个文件夹中-如何自动将这些邮件标记为“已读”?

来自分类Dev

将Powershell脚本标记为“从不运行”后,使其运行

来自分类Dev

Outlook 2010,将电子邮件复制到文件夹中,并将复制的电子邮件标记为已读,但将原始电子邮件保留为未读

来自分类Dev

应用移动规则时,Outlook 将发送的电子邮件标记为未读

来自分类Dev

自动将Outlook 2016中的特定文件夹标记为已读

来自分类Dev

Office 365 REST API(Python)将电子邮件标记为已读

来自分类Dev

自动将电子邮件标记为在Evolution 3.2.2中已读?

来自分类Dev

自动将电子邮件标记为在Evolution 3.2.2中已读?

来自分类Dev

使用imap协议Tcpclient将电子邮件标记为已读

来自分类Dev

运行SonarQube Analysis两次将所有以前的问题标记为已删除

Related 相关文章

  1. 1

    Powershell-Outlook将所有邮件标记为已读,然后删除

  2. 2

    Outlook中是否有“将所有邮件标记为已读”的快捷方式?

  3. 3

    VBA Outlook自动将文件夹中的所有电子邮件标记为已读

  4. 4

    Windows 10默认邮件应用-如何将所有未读标记为已读?

  5. 5

    powershell 查找所有组的所有用户标记为已禁用

  6. 6

    在Outlook中删除时标记为已读?

  7. 7

    Gmail REST API-将邮件标记为已读

  8. 8

    如何将邮件项目标记为已读?

  9. 9

    Gmail REST API-将邮件标记为已读

  10. 10

    fdm和msmtp:将邮件标记为已读

  11. 11

    如何将邮件项目标记为已读?

  12. 12

    日历和联系人-如何将所有标记为已读

  13. 13

    如何在一次更新中将通过EWS提取的所有电子邮件标记为已读?

  14. 14

    如何使Microsoft Outlook 2013在单击邮件时将其自动标记为已读?

  15. 15

    在Microsoft Outlook 2016中,立即将新电子邮件标记为已读

  16. 16

    移动Outlook邮件Powershell

  17. 17

    将SMS消息标记为已读/未读或删除在KitKat中不起作用的消息

  18. 18

    等待邮件发送,然后在PowerShell中将其从已发送文件夹中删除

  19. 19

    等待邮件发送,然后在PowerShell中将其从已发送文件夹中删除

  20. 20

    我有一个Outlook 2007规则,该规则将某些传出邮件复制到另一个文件夹中-如何自动将这些邮件标记为“已读”?

  21. 21

    将Powershell脚本标记为“从不运行”后,使其运行

  22. 22

    Outlook 2010,将电子邮件复制到文件夹中,并将复制的电子邮件标记为已读,但将原始电子邮件保留为未读

  23. 23

    应用移动规则时,Outlook 将发送的电子邮件标记为未读

  24. 24

    自动将Outlook 2016中的特定文件夹标记为已读

  25. 25

    Office 365 REST API(Python)将电子邮件标记为已读

  26. 26

    自动将电子邮件标记为在Evolution 3.2.2中已读?

  27. 27

    自动将电子邮件标记为在Evolution 3.2.2中已读?

  28. 28

    使用imap协议Tcpclient将电子邮件标记为已读

  29. 29

    运行SonarQube Analysis两次将所有以前的问题标记为已删除

热门标签

归档