vba - 如何引用回复的原始邮件?
问题描述
我有代码,当我回复邮件时询问应将回复保存到哪个文件夹。
我需要扩展它以移动我回复的邮件(父邮件)以保存在我为回复邮件选择的文件夹中。
如果我可以使用对话 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
解决方案
您可能会查看“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
属性。
推荐阅读
- gradle - 如何从 build.gradle 为 Kotlin 应用程序加载配置文件?
- excel - VBA excel , Sumif 动态行
- reactjs - 如何在不同的非反应网页中呈现反应应用程序?
- node.js - 如何实现请求 - 使用套接字的响应逻辑
- r - 没有适用于“预测”的方法应用于 R 中的 iml::Predictor 类“c('ksvm','vm')”的对象
- retrofit - 如何用方线进行序列化
- python - 使用 Python,如何根据 id 标签从 HTML 文件中提取信息?
- c# - 更改页面时如何避免 Crystalreport 询问数据库身份验证
- javascript - Toggle to hide cell output in the HTML version
- azure - Azure VM 自定义脚本扩展:详细的输出状态在门户上不可用