首页 文章

Outlook 宏,发送两个答复而不是一个

提问于
浏览
1

我已经为 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 回答

  • 0

    当即将发送项目时,将调用 Sub Application_ItemSend(ByVal 作为对象的项目,作为布尔值取消)。

    被发送的项目是“ ByVal 项目作为对象”中的项目。

    您使用 Set oMail = oOldMail.Reply 创建第二封邮件

    即使现在删除 Set oMail = oOldMail.Reply 和 oMail.Send,代码也存在其他问题。

    • 在撰写回复时,您可以做其他事情并更改选择。设置 oOldMail = oExplorer.Selection.Item(1)将不会获得原始邮件。

    • 对于您撰写的新邮件,没有原始邮件。您最后选择的是 oOldMail,并将其删除。

    您需要更复杂的代码来处理这两种情况。

相关问题