首页 > 解决方案 > 如何将已发送邮件保存到 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")

标签: vbaoutlookoffice365

解决方案


您可以从单个商店设置文件夹,无法从另一个商店/帐户设置文件夹。如果您想将项目保存到另一个商店,您必须先保存它们,然后以编程方式将它们移动到另一个文件夹/商店。

另外,我建议在提交项目之前设置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

推荐阅读