如何将已发送邮件保存到 Office 365 中 SentOnBehalfofName 邮箱的文件夹?
How to save Sent Items to folder of SentOnBehalfName mailbox in Office 365?
在工作中,我们从共享收件箱发送电子邮件。电子邮件将进入用户自己的已发送邮件,而不是共享收件箱。
我写了一些 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
它给出了文件夹的名称,但已发送的项目没有去那里。
我创建了一个 "Test" 文件夹并保存到忽略 Item.SentOnBehalfOfName 的文件夹,如果 "Test" 文件夹在我自己的收件箱中,但如果它在共享收件箱中则无效.
我尝试更改代码以使用 Set & 来包含应用程序,如下所示。
Set Item.SaveSentMessageFolder = Application.GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
您可以从单个商店设置文件夹,无法从另一个商店设置文件夹 store/account。如果您想将项目保存到另一个商店,您必须先保存它们,然后以编程方式将它们移动到另一个 folder/store.
此外,我建议在提交项目之前设置 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
在 ThisOutlookSession 模块中添加以下变量声明:
Private WithEvents Items As Outlook.Items
如果您还没有 Application_Startup
事件过程,请在代码区域的左侧下拉列表中 selecting Application
& Startup
在代码区域的右侧下拉菜单。
要添加到此过程的代码:
Set Items = Session.GetDefaultFolder(olFolderSentMail).Items
然后在代码区域的左侧下拉列表中,您需要 select Items
& 在代码区域的右侧下拉列表中 select ItemSend
.
下面是此过程的样子:
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeName(Item) = "MailItem" Then 'If Item is a MailItem
If Item.SentOnBehalfOfName <> Session.Accounts.Item(1).CurrentUser Then 'And if Item is Sent on Behalf of the users own inbox
'Move the email into the Sent Items folder for the inbox in question
Item.Move GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
End If
End If
End Sub
在工作中,我们从共享收件箱发送电子邮件。电子邮件将进入用户自己的已发送邮件,而不是共享收件箱。
我写了一些 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
它给出了文件夹的名称,但已发送的项目没有去那里。
我创建了一个 "Test" 文件夹并保存到忽略 Item.SentOnBehalfOfName 的文件夹,如果 "Test" 文件夹在我自己的收件箱中,但如果它在共享收件箱中则无效.
我尝试更改代码以使用 Set & 来包含应用程序,如下所示。
Set Item.SaveSentMessageFolder = Application.GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
您可以从单个商店设置文件夹,无法从另一个商店设置文件夹 store/account。如果您想将项目保存到另一个商店,您必须先保存它们,然后以编程方式将它们移动到另一个 folder/store.
此外,我建议在提交项目之前设置 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
在 ThisOutlookSession 模块中添加以下变量声明:
Private WithEvents Items As Outlook.Items
如果您还没有 Application_Startup
事件过程,请在代码区域的左侧下拉列表中 selecting Application
& Startup
在代码区域的右侧下拉菜单。
要添加到此过程的代码:
Set Items = Session.GetDefaultFolder(olFolderSentMail).Items
然后在代码区域的左侧下拉列表中,您需要 select Items
& 在代码区域的右侧下拉列表中 select ItemSend
.
下面是此过程的样子:
Private Sub Items_ItemAdd(ByVal Item As Object)
If TypeName(Item) = "MailItem" Then 'If Item is a MailItem
If Item.SentOnBehalfOfName <> Session.Accounts.Item(1).CurrentUser Then 'And if Item is Sent on Behalf of the users own inbox
'Move the email into the Sent Items folder for the inbox in question
Item.Move GetNamespace("MAPI").Folders(Item.SentOnBehalfOfName).Folders("Sent Items")
End If
End If
End Sub