用于在本地文件夹中保存电子邮件副本的Outlook VBA宏

时间:2014-07-30 14:17:45

标签: vba outlook outlook-vba

每当发送电子邮件时,我都希望将该电子邮件的副本与所有附件一起保存在本地文件夹中。

我不认为这可以通过Outlook中的自定义规则实现,但也许可以使用VBA脚本完成?

我使用Outlook和MS Exchange。

1 个答案:

答案 0 :(得分:7)

当然可以使用Application_ItemSend事件过程来调用自定义过程,将自己发送的邮件保存到本地文件夹。

此代码进入" ThisOutlookSession"模块。

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Call SaveACopy(Item)
End Sub

Sub SaveACopy(Item As Object)
    Const olMsg As Long = 3

    Dim m As MailItem
    Dim savePath As String

    If TypeName(Item) <> "MailItem" Then Exit Sub

    Set m = Item

    savePath = "c:\users\your_user_name\desktop\"  '## Modify as needed
    savePath = savePath & m.Subject & Format(Now(), "yyyy-mm-dd-hhNNss")
    savePath = savePath & ".msg"


    m.SaveAs savePath, olMsg


End Sub

您需要确保指定的路径是唯一的/ etc。,上面的示例相当粗糙。你还需要删除任何不能放入文件名(斜线,管道等)的非法字符......

作为替代方案,我建议您定期存档您的文件夹。您可以配置Outlook以将已发送邮件的副本保存到&#34;已发送&#34;文件夹,然后你应该能够存档该文件夹;单独保存每个项目似乎不太理想。