Как сделать объект из исходной почты ответа, чтобы я мог изменить папку, в которой он сохранен в Outlook VBA - PullRequest
0 голосов
/ 19 июня 2019

У меня есть надстройка, которая, когда я отвечаю на письмо, спрашивает, в какую папку следует сохранить ответ. Мне нужно расширить его, чтобы переместить письмо, на которое я отвечал (скажем, родительское письмо), чтобы оно также сохранялось в папке, которую я выбрал для ответного письма.

Я чувствую, что это можно сделать, если бы я мог каким-то образом создать объект родительской почты, возможно, с 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

1 Ответ

1 голос
/ 19 июня 2019

Вы можете посмотреть заголовок «In-Reply-To» (предоставляемый свойством PR_IN_REPLY_TO_ID MAPI), но эти значения записываются после того, как событие ItemSend было запущено.

Я бы предложил обработать событие MailItem.Reply , которое вызывается, когда пользователь выбирает действие Ответить для элемента или когда для элемента вызывается метод Ответить.Также вас может заинтересовать событие MailItem.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.

...