我为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
答案 0 :(得分:0)
当要发送一个Item时,将调用Sub Application_ItemSend(ByVal Item As Object,Cancel As Boolean)。
正在发送的物品是" ByVal物品作为对象"中的物品。
使用Set oMail = oOldMail.Reply
创建第二封邮件即使你现在删除Set oMail = oOldMail.Reply和oMail.Send,代码还有其他问题。
在撰写回复时,您可以执行其他操作并更改选择。设置oOldMail = oExplorer.Selection.Item(1)将无法获取原始邮件。
对于新邮件,您撰写的没有原始邮件。您最后的选择将是oOldMail并将被删除。
您需要更复杂的代码来处理这两种情况。