gpt4 book ai didi

vba - 从收件箱中删除电子邮件,并通过规则->脚本将其从已删除项目文件夹中删除

转载 作者:行者123 更新时间:2023-12-04 17:54:06 26 4
gpt4 key购买 nike



我创建了一个规则,它根据收到的电子邮件的主题启动 VBA 脚本(规则:主题“MY_SUBJECT”-> 启动脚本)。
然后 VBA 脚本正在做一些事情,然后它应该最终删除原始电子邮件。

这部分很简单:

Sub doWorkAndDeleteMail(Item As Outlook.MailItem)
' doSomething:

' delete email from inbox
Item.Delete
End Sub


现在电子邮件将位于已删除项目文件夹中。但我需要实现的是,还要从已删除邮件文件夹中删除此邮件。因为我知道这封邮件的主题(因为这首先触发了我的规则),所以我尝试了以下方法:

Sub doWorkAndDeleteMail(Item As Outlook.MailItem)
' doSomething:

' delete email from inbox
Item.Delete
End Sub

' delete email from deleted items-folder
Dim deletedFolder As Outlook.Folder

Set deletedFolder = Application.GetNamespace("MAPI"). _
GetDefaultFolder(olFolderDeletedItems)

Dim i As Long
For i = myFolder.Items.Count To 1 Step -1

If (deletedFolder.Items(i).Subject) = "MY_SUBJECT" Then

deletedFolder.Items(i).Delete
Exit For
End If
Next if

End Sub


好吧,这基本上是有效的:带有这个主题的邮件将在 deleted-items-folder 中找到,它会被删除,是的。但遗憾的是它没有按预期工作:这种永久删除只有在我第二次启动脚本后才有效。

因此触发我的脚本的电子邮件永远不会在此脚本的实际运行中被永久删除,而只会在下一次运行时被删除(一旦收到下一封带有我的规则的触发主题的电子邮件 - 但紧随其后的是下一封电子邮件不会再被删除)。

你知道我在这里做错了什么吗?看起来我需要以某种方式刷新我的已删除项目文件夹。还是我必须以某种方式明确地提交我的第一个 Item.Delete

最佳答案

问题没有重现,但尝试逐步解决这个问题,如果它看起来像您想要的那样,则可以正常运行。

Sub doWorkAndDeleteMail(Item As mailitem)

Dim currFolder As Folder
Dim DeletedFolder As Folder

Dim i As Long
Dim mySubject As String

Set currFolder = ActiveExplorer.CurrentFolder
mySubject = Item.Subject
Debug.Print mySubject

Set DeletedFolder = GetNamespace("MAPI").GetDefaultFolder(olFolderDeletedItems)

Set ActiveExplorer.CurrentFolder = DeletedFolder

Debug.Print "DeletedFolder.count before delete: " & DeletedFolder.Items.count
' delete email from deleted items-folder
Item.Delete
Debug.Print "DeletedFolder.count after delete: " & DeletedFolder.Items.count

' If necessary
'DoEvents

For i = DeletedFolder.Items.count To 1 Step -1

Debug.Print DeletedFolder.Items(i).Subject

If (DeletedFolder.Items(i).Subject) = mySubject Then

Debug.Print DeletedFolder.Items(i).Subject & " *** found ***"

DeletedFolder.Items(i).Delete

Exit For

End If
Next

Set ActiveExplorer.CurrentFolder = currFolder

End Sub

关于vba - 从收件箱中删除电子邮件,并通过规则->脚本将其从已删除项目文件夹中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41879972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com