đã viết chức năng xử lý tin nhắn trong Visual Basic của Outlook (chúng tôi đang sử dụng Outlook 2003 và Exchange Server) để giúp tôi sắp xếp email đến. Nó làm việc cho tôi, ngoại trừ đôi khi quy tắc không thành công và Outlook hủy kích hoạt nó. Sau đó, tôi bật lại quy tắc và tự chạy quy tắc đó trên Hộp thư đến của mình để bắt kịp. Quy tắc tự động thất bại và vô hiệu hóa nhiều lần trong ngày. Tôi rất thích sửa lỗi này một lần và mãi mãi.
Đây là mã bị tước hết các chức năng, nhưng đem lại cho bạn một ý tưởng về cách nó trông giống:
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
Một lỗi tôi nhận được là "không phù hợp Loại" gọi MyMessageHandler nơi VB phàn nàn rằng mục không phải là một MailItem . Được rồi, nhưng TypeName (Item) trả về "MailItem", vậy làm thế nào đến Item không phải là một MailItem?
Một địa chỉ khác tôi nhận được là địa chỉ email có chủ đề trống xuất hiện. Dòng
strSubject = Item.Subject
cho tôi lỗi. Tôi biết Item.Subject nên để trống, nhưng tại sao lại là lỗi?
Cảm ơn.
Nguồn
2008-09-17 01:39:16
LoạiName tra hỏi loại dành cho phiên bản có thể đọc được. Vì có thể có hai loại khác nhau có cùng tên, dựa vào TypeName để thực hiện kiểm tra kiểu sẽ dẫn đến kết quả dương/âm sai. Hãy thử "TypeOf Item là MailItem" thay vì – rpetrich
Nếu 'TypeName (Item) =" MailItem "', sau đó gọi một thủ tục ... mà không chỉ chấp nhận chỉ MailItems, nhưng một lần nữa kiểm tra nếu mục là một MailItem? – JimmyPena