我正在检查一个特定的邮件是否已经被转发,如果没有,则转发该邮件。可惜我运气不太好。
这是我的代码:
Private Sub Forward_Mail(OItem As RDOMail)
Dim oForwardMail As RDOMail
Dim itemTags As Variant
Dim ForwardedTagMissing As Boolean
Dim CCField As String
On Error GoTo Release
itemTags = OItem.GetProps("http://schemas.microsoft.com/mapi/proptag/0x10820040")(0)
ForwardedTagMissing = IsError(itemTags)
If ForwardedTagMissing Then
Set oForwardMail = OItem.Forward
With oForwardMail
.Subject = OItem.Subject
.HTMLBody = OItem.HTMLBody
.Recipients.Add "Test.Email@test.com"
.Display
End With
'Mark unread
OItem.UnRead = False
End If
Set oForwardMail = Nothing
End Sub
此代码的问题在于,它将邮件条目设置为已转发,即使邮件条目尚未被转发。知道我哪里做错了吗?
需要读取的属性是PR_LAST_VERB_EXECUTED
(0x10810003
)。您对EXCHIVERB_FORWARD = 104
值感兴趣。DASL属性名称为http://schemas.microsoft.com/mapi/proptag/0x10810003
。
您也可以查看它转发的时间,参见PR_LAST_VERB_EXECUTED_TIME
, DASL名称为http://schemas.microsoft.com/mapi/proptag/0x10820040
。
你可能会发现使用VBA线程从父文件夹和子文件夹导出电子邮件到Excel很有帮助。
如果您的意思是Outlook(和Redemption)在用户实际单击新邮件上的发送按钮之前将原始邮件标记为已转发,那么这是意料之中的。如果新邮件被取消,Outlook将忽略更改。