我在 Outlook 中有一个 VBA 脚本,旨在根据项目放置在文件夹中的时间进行一些自动电子邮件处理。这按预期工作,但我试图让它更智能一点,以便脚本可以查看放入文件夹的电子邮件是否已得到回复。
目前,在将邮件放入文件夹 X 的那一刻,脚本会自动回复该电子邮件,然后将该邮件标记为未读。但是,如果邮件已经被标记为“已回复”,无论脚本是否回复了邮件,或者是否有人在将邮件放入文件夹 X 之前发送了回复,我想确保脚本不会发送回复,并且简单地将邮件标记为未读。这是可以通过读取 IMAP 属性标签来完成的吗?如果是这样,我在寻找哪个标签?我一直在努力弄清楚如何做到这一点。任何帮助,将不胜感激。
作为参考,这是我拥有的脚本(删除了识别细节):
注意:我知道我有一些声明的变量但没有被引用。稍后我将使用这些来做其他事情。
Option Explicit
'##############################################
'### all code for the ThisOutlookSession module
'### Module level Declarations
'expose the items in the target folder to events
Dim WithEvents ackSpamMsgs As Items
Dim WithEvents ackPhishMsgs As Items
Dim WithEvents fwdMsgs As Items
'###############################################
Private Sub Application_Startup()
'some startup code to set our "event-sensitive"
'items collection
Dim objNS As Outlook.NameSpace
Dim ackFolder As Folder
Dim compFolder As Folder
Set objNS = Application.GetNamespace("MAPI")
Set ackMsgs = objNS.Folders("Inbox").Folders("Folder X").Items
Set fwdMsgs = objNS.Folders("Inbox").Folders("Folder Y").Items
End Sub
'#################################################
'### this is the ItemAdd event code
Sub ackMsgs_ItemAdd(ByVal Item As Object)
'when a new item is added to our "watched folder"
'we can process it
Dim msg As MailItem
Set msg = Item.Reply
'This is where I want to check if the mail has been replied to, and skip the "with"
'below if it has been replied to.
With msg
.Subject = "RE: " & Item.Subject
.HTMLBody = "Body of email here"
.Send
Set msg.UnRead = True
End With
End Sub
Sub fwdMsgs_ItemAdd(ByVal Item As Object)
Dim msg As MailItem
Dim newMsg As MailItem
Set msg = Item.Forward
msg.Recipients.Add ("email@email.com")
msg.Send
End Sub
'#################################################
Private Sub Application_Quit()
Dim objNS As Outlook.NameSpace
Set ackMsgs = Nothing
Set fwdMsgs = Nothing
Set objNS = Nothing
End Sub