我已经为 Outlook 创建了此宏,以便在成功发送回复后删除电子邮件。
测试表明,我发送了两个答复,而不是一个。
Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim oExplorer As Outlook.Explorer
Dim oMail As Outlook.MailItem
Dim oOldMail As Outlook.MailItem
Set oExplorer = Application.ActiveExplorer
If oExplorer.Selection.Item(1).Class = olMail Then
Set oOldMail = oExplorer.Selection.Item(1)
Set oMail = oOldMail.Reply
oMail.Recipients.Item(1).Resolve
If oMail.Recipients.Item(1).Resolved Then
'delete reply email from sent items
oMail.DeleteAfterSubmit = True
oMail.Send
'delete original email from inbox
oOldMail.Delete
Else
MsgBox "Could not resolve " & oMail.Recipients.Item(1).Name
End If
Else
MsgBox "Not a mail item"
End If
End Sub
1 回答
当即将发送项目时,将调用 Sub Application_ItemSend(ByVal 作为对象的项目,作为布尔值取消)。
被发送的项目是“ ByVal 项目作为对象”中的项目。
您使用 Set oMail = oOldMail.Reply 创建第二封邮件
即使现在删除 Set oMail = oOldMail.Reply 和 oMail.Send,代码也存在其他问题。
在撰写回复时,您可以做其他事情并更改选择。设置 oOldMail = oExplorer.Selection.Item(1)将不会获得原始邮件。
对于您撰写的新邮件,没有原始邮件。您最后选择的是 oOldMail,并将其删除。
您需要更复杂的代码来处理这两种情况。