Tôi đã có thể nhúng một tab vào chuỗi tìm kiếm bằng cách nhấn Control + i khi nhập nó nhưng điều này không khớp với các thư trên máy chủ thư của tôi. Khi tôi kiểm tra các ký tự thực tế trong phần thân thông điệp của tin nhắn nhận được, tôi thấy rằng ký tự {TAB} thực tế đã được dịch thành sáu ký tự \ u00A0 (unicode) theo sau là một ký tự khoảng trắng. Điều này ngăn chuỗi tìm kiếm khớp. Bạn có thể muốn thử phương pháp này trước để xem nó có hoạt động với email của bạn không.
Là một giải pháp thay thế, bạn có thể tạo quy tắc "tùy chỉnh" bằng cách thêm macro Visual Basic cho Ứng dụng vào Outlook.
- Trước tiên, bật menu Nhà phát triển bằng cách đi tới Outlook -> Tùy chọn -> Tùy chỉnh Ribbon và sau đó kiểm tra tùy chọn Nhà phát triển trong danh sách Tab chính ở bên phải.
- Bây giờ quay lại giao diện Outlook chính của bạn, bạn sẽ thấy menu Nhà phát triển , chọn nó
- Nhấp vào nút Bảo mật Macro trên ruy-băng và chọn "Thông báo cho tất cả các macro" hoặc "Bật tất cả các macro (không được đề xuất; mã nguy hiểm tiềm tàng có thể chạy)
- Tiếp theo, nhấp vào nút Visual Basic trên ruy-băng để mở trình soạn thảo Visual Basic
- Đi đến Công cụ -> Tham chiếu và thêm tham chiếu vào thư viện Microsoft VBScript Biểu thức chính quy 5.5
- Trong trình chỉnh sửa Visual Basic, chọn ThisOutlookSession và dán mã được liệt kê bên dưới.
- Lưu dự án của bạn và thoát Outlook
- Mở lại Outlook và gửi cho mình một tin nhắn thử nghiệm
Bạn sẽ cần chỉnh sửa nội dung chuỗi của các hằng số RouteToFolderName và RouteToFolderRegEx để phù hợp với sở thích tìm kiếm của bạn.
Macro được lưu vào một tệp có tên VBAProject.OTM nằm trong khu vực cài đặt người dùng của bạn (C: \ Users \\ AppData \ Roaming \ Microsoft \ Outlook \ thư mục trên Windows 7). Bạn có thể tạo một bản sao lưu của tệp này sau khi bạn đã nhận được macro hoạt động theo thông số kỹ thuật của bạn.
Tùy chọn rõ ràng
Private WithEvents olInboxItems As Item
'Đây là tên của thư mục bạn muốn tin nhắn của mình được chuyển đến Private Const RouteToFolderName As String = "FollowUp"
'Đây là biểu thức chính quy phù hợp với văn bản bạn đang tìm kiếm. Outlook đã thay thế một ký tự {TAB} bằng các ký tự '6 x \ u00A0 và 1 x dấu cách. Tuyến đường riêng ConstToFolderRegex dưới dạng chuỗi = "Thay đổi bởi: \ u00A0 + \ s + Me"
Ứng dụng phụ riêng tư
Private Sub olInboxItems_ItemAdd (ByVal Item As Object) Dim objNS As NameSpace Dim objMailItem As Outlook.MailItem Dim objMailFolderId As String Dim regex As RegExp Dim Found As Boolean
' Check to make sure we have a mail message first
If (TypeOf Item Is Outlook.MailItem) Then
' Locate the id of the folder we want to store the message in
objMailFolderId = FindFolderByName(Application.Session.folders, Found,
RouteToFolderName)
Set objMailItem = Item
Set regex = New RegExp
regex.IgnoreCase = True ' Do a case insensitive search
regex.Global = True
regex.Pattern = RouteToFolderRegex
' Test the message body against the regular expression
If (regex.Test(objMailItem.Body)) Then
' Message body matched so move to our folder
objMailItem.Move Application.Session.GetFolderFromID(objMailFolderId)
End If
End If
End Sub
'Tìm kiếm đệ quy từ thư mục gốc để tìm thư mục khớp với "thư mục Tên" (không phân biệt chữ hoa chữ thường)
For Each objFolder In folders
If Found = True Then
Exit Function
End If
If LCase(objFolder.Name) = LCase(folderName) Then
FindFolderByName = objFolder.EntryID
Found = True
Exit Function
Else
If objFolder.folders.Count > 0 Then
FindFolderByName = FindFolderByName(objFolder.folders, Found, folderName)
End If
End If
Next End Function