【问题标题】:Outlook VBA macro for saving emails copies in a local folder用于将电子邮件副本保存在本地文件夹中的 Outlook VBA 宏
【发布时间】:2014-07-30 14:17:44
【问题描述】:

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

我认为这在 Outlook 中使用自定义规则是不可能的,但也许可以使用 VBA 脚本来完成?

我使用 Outlook 和 MS Exchange。

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    当然可以使用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
    

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

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

    【讨论】:

    • 谢谢大卫。有没有办法自动归档文件夹?
    • 这听起来像是一个单独的问题...如果这对您有用,请考虑接受答案。
    • 如何保存文件并使“文件创建”日期与收到电子邮件的日期相同
    • @softwareisfun 请参阅this 并提出一个新的、单独的问题,如果您遇到困难(而不是在 this 上回复 cmets 回答 this 问题)。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多