我正在编写一段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
答案 0 :(得分:3)
当ItemSend事件触发时,消息尚未提交(您可以将Cancel参数设置为true)。您最早可以看到已发送状态的消息是Items.ItemAdd事件在已发送邮件文件夹上触发。
为什么不简单地设置MailItem.SaveSentMessageFolder属性? Outlook将在邮件发送后自动移动邮件。唯一的限制是该文件夹必须位于创建消息的同一商店中。