【发布时间】:2020-06-22 14:45:03
【问题描述】:
我正在尝试在特定时间将 Outlook 中的新电子邮件从名为 Customer Service 的通讯组转移到子文件夹。我不认为规则有能力在某个时间转移电子邮件,所以我正在使用 Application.NewEmail 事件。
我现在设置了我的代码,以便它可以将电子邮件从 Exchange 发件人的电子邮件地址转移到子文件夹。但是,我需要能够以某种方式对通讯组执行相同的操作,但我不确定如何提取识别通讯组所需的信息。
这是我的代码:
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal cusItem As Object)
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
Dim strAddress As String, strEntryId As String
Dim objAddressentry As Outlook.AddressEntry, objExchangeUser As Outlook.ExchangeUser
Dim objReply As Outlook.MailItem, objRecipient As Outlook.Recipient
Dim objDestFolder As Outlook.MAPIFolder
If TypeName(cusItem) = "MailItem" And cusItem.SenderEmailType = "EX" Then
On Error GoTo ErrorHandler
Set objReply = cusItem.Reply()
Set objRecipient = objReply.Recipients.Item(1)
strEntryId = objRecipient.EntryID
objReply.Close OlInspectorClose.olDiscard
Set objAddressentry = objNS.GetAddressEntryFromID(strEntryId)
Set objExchangeUser = objAddressentry.GetExchangeUser()
strAddress = objExchangeUser.PrimarySmtpAddress()
If strAddress = "jabach@example.com" And TimeValue(Now()) >= TimeValue("08:00:00 AM") And TimeValue(Now()) <= TimeValue("05:00:00 PM") Then
Set objDestFolder = objNS.GetDefaultFolder(olFolderInbox).Folders("ryule")
cusItem.Move objDestFolder
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description & vbCrLf & "Click Ok to continue"
Resume ProgramExit
End Sub
Application_Startup() 也存在一些问题,它实际上并没有启动 Outlook,这就是为什么我将所有这些变量声明了两次。
【问题讨论】: