首页 > 解决方案 > 如何引用回复的原始邮件?

问题描述

我有代码,当我回复邮件时询问应将回复保存到哪个文件夹。

我需要扩展它以移动我回复的邮件(父邮件)以保存在我为回复邮件选择的文件夹中。

如果我可以使用对话 ID 制作父邮件的对象,我觉得可以做到这一点?

Public Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

    Dim myFolder As MAPIFolder
    Dim myOlApp As Outlook.Application
    Dim myOlExp As Outlook.Explorer

    If Environ("MailSave") = True Then
        If TypeName(Item) = "MailItem" Then
            Set myOlApp = CreateObject("Outlook.Application")
            Set olNS = myOlApp.GetNamespace("MAPI")
            Set myFolder = olNS.PickFolder
            
            'todo
            If Not (myFolder Is Nothing) Then
                Set Item.SaveSentMessageFolder = myFolder
                'Item.Parent.Move myFolder ---I tried this. But it is wrong I know
                ' MsgBox ("All moved")
            
            End If
        End If
    End If
End Sub

标签: vbaoutlook

解决方案


您可能会查看“In-Reply-To”标头(由PR_IN_REPLY_TO_ID MAPI 属性公开),但这些值是在 ItemSend 事件触发后写入的。

我建议处理MailItem.Reply事件,该事件在用户选择项目的回复操作或为项目调用回复方法时触发。此外,您可能对MailItem.Forward事件感兴趣,该事件在用户选择项目的 Forward 操作或为项目调用 Forward 方法时触发。

Public WithEvents myItem As MailItem  

Sub Initialize_Handler()  
  Set myItem = Application.ActiveInspector.CurrentItem  
End Sub 

Private Sub myItem_Reply(ByVal Response As Object, Cancel As Boolean)  
  Set Response.SaveSentMessageFolder = myItem.Parent  
End Sub

因此,按照这种方式,您将能够访问原始项目并设置SaveSentMessageFolder属性。


推荐阅读