什么时候MailItem不是MailItem?
我已经在Outlook的Visual Basic中编写了消息处理程序功能(我们正在使用Outlook 2003和Exchange Server)来帮助我整理传入的电子邮件。
它对我有用,除了有时规则失败并且Outlook将其停用。
然后,我重新打开规则,并在"收件箱"中手动运行该规则以进行跟踪。该规则自发地失败,并且每天停用几次。
我很想一劳永逸地解决这个问题。
解决方案
回答
已在Outlook的Visual Basic中编写了消息处理程序功能(我们正在使用Outlook 2003和Exchange Server)来帮助我整理传入的电子邮件。它对我有用,除了有时规则失败并且Outlook将其禁用。然后,我重新打开规则,并在"收件箱"中手动运行该规则以赶上进度。该规则自发地失败,并且一天停用几次。我很想一劳永逸地解决这个问题。
以下是剥离该功能的代码,但让我们大致了解了它的外观:
Public WithEvents myOlItems As Outlook.Items Public Sub Application_Startup() ' Reference the items in the Inbox. Because myOlItems is declared ' "WithEvents" the ItemAdd event will fire below. ' Set myOlItems = Outlook.Session.GetDefaultFolder(olFolderInbox).Items Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox).Items End Sub Private Sub myOlItems_ItemAdd(ByVal Item As Object) On Error Resume Next If TypeName(Item) = "MailItem" Then MyMessageHandler Item End If End Sub Public Sub MyMessageHandler(ByRef Item As MailItem) Dim strSender As String Dim strSubject As String If TypeName(Item) <> "MailItem" Then Exit Sub End If strSender = LCase(Item.SenderEmailAddress) strSubject = Item.Subject rem do stuff rem do stuff rem do stuff End Sub
我收到的一个错误是"类型不匹配"调用MyMessageHandler,其中VB抱怨该项目不是MailItem。好的,但是TypeName(Item)返回" MailItem",那么为什么Item不是MailItem?
我收到的另一封邮件是一封主题为空的电子邮件。线
strSubject = Item.Subject
给我一个错误。我知道Item.Subject应该为空,但是为什么会出现错误?
谢谢。
回答
我的记忆对此有些困惑,但是我认为MailItem并非已读邮件的MailItem。 (不幸的是,演示此操作的VBA代码是在另一项工作中编写的,现在还没有。)
我还编写了用于处理传入消息的代码,可能是出于与我们相同的原因(Exchange的规则太多,或者规则向导的规则太复杂),并且似乎想起遇到了同样的问题,有些项目似乎即使我用你写的东西抓住他们,也来自不同的类型。
我将看看是否可以提供一个具体的示例,如果有帮助的话。