Lọc tin nhắn từ Hộp thư Exchange
Aspose.Email for C++ cho phép các nhà phát triển lọc tin nhắn trong hộp thư Exchange bằng cách sử dụng IEWSClient, MailQuery, và ExchangeQueryBuilder. Bạn có thể lọc tin nhắn theo ngày, người gửi, miền, MessageID, thông báo giao hàng, và nhiều tiêu chí khác.
Để truy xuất các tin nhắn từ một thư mục để xử lý tiếp, IEWSClient. có các phương thức sau:
- ListMessages() - Lấy tất cả tin nhắn từ một hộp thư.
- ListMessages() định dạng - Trả về chỉ các tin nhắn khớp với các điều kiện cụ thể. Nó chấp nhận một MailQuery định nghĩa các quy tắc lọc như từ khóa tiêu đề, khoảng ngày và lọc dựa trên địa chỉ.
Lọc Tin nhắn bằng IEWSClient
Mã mẫu dưới đây minh họa cách truy vấn và lấy các email cụ thể từ Exchange Server bằng Exchange Web Services (EWS) với Aspose.Email cho C++. Nó trình bày quy trình đầy đủ: kết nối tới máy chủ Exchange (trong trường hợp này là Office 365), xây dựng truy vấn tìm kiếm để tìm tin nhắn có "Newsletter" trong tiêu đề và đến hôm nay, thực thi truy vấn trên hộp đến, lấy các tin nhắn khớp, và xử lý vòng đời kết nối một cách đúng đắn với xử lý lỗi.
- Kết nối tới máy chủ Exchange bằng IEWSClient.
- Tạo một MailQuery hoặc ExchangeQueryBuilder và xác định các điều kiện lọc.
- Gọi ListMessages(folderUri, query) để nhận kết quả đã lọc.
Lọc Tin nhắn theo Tiêu chí
Mẫu mã trên lọc tin nhắn dựa trên tiêu đề email và ngày. Bạn cũng có thể lọc các thuộc tính khác. Dưới đây là một vài ví dụ về cách thiết lập các điều kiện bằng MailQuery.
Lọc theo Ngày Hôm Nay
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email đã đến hôm nay.
Lọc theo Khoảng Thời Gian
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email đã đến trong vòng 7 ngày qua.
Lọc theo Người Gửi Cụ Thể
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email từ một người gửi cụ thể.
Lọc theo Miền
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email từ một miền cụ thể.
Lọc theo Người Nhận
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email được gửi tới một người nhận cụ thể.
Lọc theo MessageID
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm một email cụ thể theo MessageId của nó.
Lọc Thông Báo Giao Nhận Thư
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm Thông Báo Giao Nhận Thư (MDNs).
Lọc theo Kích Thước Tin Nhắn
Mẫu mã sau đây minh họa cách xây dựng truy vấn để tìm email lớn hơn một kích thước nhất định.
Xây dựng truy vấn phức tạp
Khi sử dụng MailQueryBuilder hoặc ExchangeQueryBuilder, mỗi thuộc tính bạn đặt sẽ tạo một điều kiện lọc. Nếu các điều kiện này được định nghĩa trong các câu lệnh riêng biệt, chúng sẽ được kết hợp bằng logical AND, nghĩa là tất cả các điều kiện phải khớp để một tin nhắn được trả về.
Điều này cho phép các nhà phát triển xây dựng các bộ lọc chính xác như:
- Email trong một khoảng thời gian
- Email từ một miền cụ thể
- Email phù hợp với nhiều tiêu chí đồng thời
Kết hợp Truy vấn với AND
Sử dụng nhiều thuộc tính builder theo thứ tự sẽ tự động tạo một thao tác AND.
Ví dụ sau đây truy xuất các tin nhắn mà:
- Đến từ một miền cụ thể
- Đã đến trước hôm nay
- Đã đến trong vòng bảy ngày qua
Kết hợp Truy vấn với OR
Để khớp các tin nhắn đáp ứng một trong hai điều kiện, hãy sử dụng phương thức Or().
Ví dụ sau đây lấy các tin nhắn mà:
- Chứa “test” trong tiêu đề, hoặc
- Được gửi bởi “noreply@host.com”
Lọc Email Phân Biệt Hoa Thường
Bạn có thể áp dụng lọc phân biệt chữ hoa chữ thường hoặc không khi truy vấn tin nhắn từ hộp thư Exchange. Để kiểm soát hành vi này, sử dụng cờ IgnoreCase có sẵn trong các phương thức lọc. Đặt true sẽ bật chế độ không phân biệt chữ hoa chữ thường.
Ví dụ dưới đây lọc các tin nhắn mà:
- Chứa từ "Newsletter" trong tiêu đề (không phân biệt chữ hoa chữ thường)
- Đã đến hôm nay
Phân Trang trong Lọc Tin Nhắn
Khi làm việc với các hộp thư Exchange lớn, phân trang cho phép bạn truy xuất tin nhắn thành các lô nhỏ, dễ quản lý. ListMessagesByPage phương thức của IEWSClient trả về kết quả theo trang dựa trên kích thước trang và tiêu chí truy vấn đã chỉ định.
Ví dụ dưới đây minh họa cách:
- Xây dựng bộ lọc bằng cách sử dụng MailQueryBuilder.
- Lấy kết quả theo trang.
- Lặp qua tất cả các trang cho đến trang cuối cùng.
- Đếm tổng số tin nhắn khớp.