vba - 如何将已发送邮件保存到 Office 365 中 SentOnBehalfName 邮箱的文件夹?
问题描述
在工作中,我们从共享收件箱发送电子邮件。电子邮件将进入用户自己的已发送项目,而不是共享收件箱。
我写了一些 VBA 代码来解决这个问题。我们正在迁移到 Outlook 365 并且代码在那里不起作用。
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If TypeName(Item) = "MailItem" Then 'If Item is a MailItem
If Item.SentOnBehalfOfName <> "" Then 'And if Item is Sent on Behalf of an inbox
'Save the sent email in the Sent Items folder for the inbox in question
Item.SaveSentMessageFolder GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
End If
End If
End Sub
我试过
msgbox GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items").Name
它给出了文件夹的名称,但已发送的项目没有到那里。
我创建了一个“测试”文件夹并保存到忽略 Item.SentOnBehalfOfName 的文件夹中,如果“测试”文件夹在我自己的收件箱中,但如果它在共享收件箱中则不行。
我尝试更改代码以使用 Set & 以包含 Application,如下所示。
Set Item.SaveSentMessageFolder = Application.GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
解决方案
您可以从单个商店设置文件夹,无法从另一个商店/帐户设置文件夹。如果您想将项目保存到另一个商店,您必须先保存它们,然后以编程方式将它们移动到另一个文件夹/商店。
另外,我建议在提交项目之前设置MailItem.SaveSentMessageFolder属性:
Sub SetSentFolder()
Dim myItem As Outlook.MailITem
Dim myResponse As Outlook.MailITem
Dim mpfInbox As Outlook.Folder
Dim mpf As Outlook.Folder
Set mpfInbox = Application.Session.GetDefaultFolder(olFolderInbox)
Set mpf = mpfInbox.Folders.Add("SaveMyPersonalItems")
Set myItem = Application.ActiveInspector.CurrentItem
Set myResponse = myItem.Reply
myResponse.Display
myResponse.To = "Eugene Astafiev"
Set myResponse.SaveSentMessageFolder = mpf
myResponse.Send
End Sub
推荐阅读
- python - django 模板上的长度过滤器似乎不起作用
- reactjs - React material-table cellEditable:空值和基于另一个单元格值的可编辑道具
- c# - 如何在 C# 中实现 Array.Copy
- python - 代理错误但代理是 100% 工作 Python
- regex - 用特定文本替换匹配文本的每个字符
- javascript - 如何使用 Promise.all + Array.prototype.map() 获取不同的数据
- python - python字典:值和键
- android - Viewpager2 适配器显示第一页空白
- c# - 我想将多个按钮用于一个具有不同操作的计时器
- html - Odoo13 - 内容垂直居中的自定义网页