Outlook VBA保存复制已发送项目

时间:2014-04-04 16:05:06

标签: vba outlook outlook-vba

我正在编写一段Outlook-vba代码,用于保存特定文件夹中已发送邮件的副本。点击“发送”时会触发代码。

以下代码正在运行,但该项目作为UNSENT电子邮件项目保存在文件夹中(outlook显示消息:“此消息尚未发送”)。我希望它作为已发送项目保存在我的文件夹中(就像文件夹“已​​发送项目”)。

您能否对以下代码发表评论:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error GoTo ErrorHandler

Dim moveToFolder As Outlook.MAPIFolder
Dim myCopiedItem As Outlook.MailItem

Set ns = Application.GetNamespace("MAPI")
Set moveToFolder = ns.Folders("Mailbox - My Mailbox").Folders(".Waiting_for")


With Item

    If InStr(Item.Body, "/wf") > 0 Then

         Set myCopiedItem = Item.copy

            myCopiedItem.Move moveToFolder

    Else
    End If

End With

Exit Sub
ErrorHandler:
    MsgBox "Error!"
End Sub

1 个答案:

答案 0 :(得分:3)

当ItemSend事件触发时,消息尚未提交(您可以将Cancel参数设置为true)。您最早可以看到已发送状态的消息是Items.ItemAdd事件在已发送邮件文件夹上触发。

为什么不简单地设置MailItem.SaveSentMessageFolder属性? Outlook将在邮件发送后自动移动邮件。唯一的限制是该文件夹必须位于创建消息的同一商店中。