Lấy và Liệt Kê Email từ Máy Chủ IMAP
Lấy và Liệt Kê Tin Nhắn
Cách Lấy Thông Tin Định Danh cho Tin Nhắn trong Hộp Thư
Khi lấy và xử lý các tin nhắn email, bạn có thể nhận thông tin định danh chi tiết, như số thứ tự và ID duy nhất, bằng cách sử dụng các tính năng sau do phiên bản mới nhất của Aspose.Email cho .NET cung cấp:
Aspose.Email.ImapMessageInfo lớp: Đại diện cho thông tin định danh về một tin nhắn trong hộp thư IMAP.
ImapMessageInfo.SequenceNumber thuộc tính: Lấy số thứ tự của tin nhắn.
ImapMessageInfo.UniqueId thuộc tính: Lấy định danh duy nhất của tin nhắn.
Aspose.Email.MailMessage.ItemId thuộc tính: Đại diện cho thông tin định danh bổ sung về tin nhắn trong hộp thư.
Đoạn mã sau minh họa cách lấy thông tin định danh cho các tin nhắn trong hộp thư IMAP:
- Tạo một đối tượng của ImapClient lớp bằng cách cung cấp các tham số cần thiết như máy chủ IMAP, cổng, địa chỉ email, mật khẩu và tùy chọn bảo mật.
- Sử dụng ListMessages phương thức để lấy danh sách tin nhắn từ thư mục "INBOX". Giới hạn danh sách tới năm tin nhắn đầu tiên bằng phương thức Take(5).
- Trích xuất các số thứ tự của các tin nhắn đã liệt kê bằng cách sử dụng SequenceNumber thuộc tính của mỗi tin nhắn.
- Sử dụng FetchMessages phương thức để lấy chi tiết đầy đủ của các tin nhắn từ máy chủ, sử dụng các số thứ tự đã thu được ở bước trước.
- Duyệt qua các tin nhắn đã lấy và với mỗi tin nhắn, lấy và hiển thị thông tin sau:
- Số thứ tự của tin nhắn.
- Thuộc tính ItemId.SequenceNumber.
- Tiêu đề của tin nhắn.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
// List the first 5 messages from the inbox
var msgs = client.ListMessages("INBOX").Take(5);
// Get sequence numbers of the messages
var seqIds = msgs.Select(t => t.SequenceNumber);
// Fetch messages based on sequence numbers
var msgsViaFetch = client.FetchMessages(seqIds);
for (var i = 0; i < 5; i++)
{
var thisMsg = msgsViaFetch[i];
Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
}
}
Liệt Kê ID Tin Nhắn MIME Từ Máy Chủ
ImapMessageInfo cung cấp MIME MessageId để xác định tin nhắn mà không cần trích xuất toàn bộ tin nhắn. Đoạn mã sau cho bạn thấy cách liệt kê MIME messageId.
Liệt kê Tin nhắn từ Máy chủ
Aspose.Email cung cấp một phiên bản overload 2 thành phần của ListMessages() để lấy một số lượng tin nhắn xác định dựa trên truy vấn. Đoạn mã sau cho bạn thấy cách liệt kê Tin Nhắn.
Liệt kê Tin nhắn Đệ quy
Giao thức IMAP hỗ trợ việc liệt kê tin nhắn đệ quy từ một thư mục hộp thư. Điều này cũng giúp liệt kê tin nhắn từ các thư mục con. Đoạn mã sau cho bạn thấy cách liệt kê tin nhắn một cách đệ quy.
Liệt kê Tin nhắn với MultiConnection
ImapClient cung cấp một UseMultiConnection thuộc tính có thể được sử dụng để tạo nhiều kết nối cho các thao tác nặng. Bạn cũng có thể đặt số lượng kết nối sẽ được sử dụng trong chế độ đa kết nối bằng cách sử dụng ImapClient.ConnectionsQuantity. Đoạn mã sau minh họa việc sử dụng chế độ đa kết nối để liệt kê tin nhắn và so sánh hiệu năng của nó với chế độ kết nối đơn.
Liệt kê Tin nhắn với Hỗ trợ Phân trang
Trong các trường hợp, khi máy chủ email chứa một số lượng lớn tin nhắn trong hộp thư, thường cần liệt kê hoặc truy xuất các tin nhắn với hỗ trợ phân trang. API của Aspose.Email ImapClient cho phép bạn lấy các tin nhắn từ máy chủ với hỗ trợ phân trang.
Liệt kê Tệp Đính Kèm Tin Nhắn
Để lấy thông tin về các tệp đính kèm như tên, kích thước mà không cần tải dữ liệu tệp đính kèm, hãy thử các API sau:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Đại diện cho thông tin tệp đính kèm.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Đại diện cho một tập hợp của ImapAttachmentInfo lớp.
- Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Lấy thông tin cho mỗi tệp đính kèm trong một tin nhắn.
Đoạn mã mẫu với các bước dưới đây sẽ cho bạn thấy cách sử dụng các API:
- Gọi ListMessages() phương thức trên đối tượng imapClient. Phương thức này sẽ trả về một ImapMessageInfoCollection chứa thông tin về các tin nhắn trong hộp thư.
- Duyệt qua từng tin nhắn trong messageInfoCollection bằng vòng lặp foreach.
- Gọi ListAttachments() phương thức trên đối tượng imapClient, truyền thuộc tính SequenceNumber của đối tượng message làm tham số. Phương thức này sẽ trả về một ImapAttachmentInfoCollection chứa thông tin về các tệp đính kèm trong tin nhắn.
- Duyệt qua từng tệp đính kèm trong attachmentInfoCollection bằng vòng lặp foreach.
- Trong vòng lặp bên trong, bạn có thể truy cập thông tin về mỗi tệp đính kèm bằng cách sử dụng các thuộc tính của đối tượng attachmentInfo.
var messageInfoCollection = imapClient.ListMessages();
foreach (var message in messageInfoCollection)
{
var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);
foreach (var attachmentInfo in attachmentInfoCollection)
{
Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
}
}
Lấy và Lưu Tin nhắn
Lấy Tin nhắn từ Máy chủ
Cái ImapClient lớp có thể lấy tin nhắn từ máy chủ IMAP và lưu chúng ở định dạng EML lên đĩa cục bộ. Các bước sau đây cần thực hiện để lưu tin nhắn lên đĩa:
- Tạo một đối tượng của ImapClient lớp.
- Xác định hostname, cổng, tên người dùng và mật khẩu trong ImapClient constructor.
- Chọn thư mục bằng cách sử dụng SelectFolder() phương thức.
- Gọi ListMessages phương thức để lấy ImapMessageInfoCollection đối tượng.
- Lặp qua ImapMessageInfoCollection bộ sưu tập, gọi SaveMessage() phương thức và cung cấp đường dẫn đầu ra cùng tên tệp.
Đoạn mã sau đây cho bạn thấy cách lấy các tin nhắn email từ máy chủ và lưu chúng.
Lấy Tin Nhắn theo Thứ Tự Giảm Dần
Aspose.Email cung cấp ImapClient.ListMessagesByPage phương thức liệt kê tin nhắn có hỗ trợ phân trang. Một số overload của ImapClient.ListMessagesByPage chấp nhận PageSettings như một tham số. PageSettings cung cấp một AscendingSorting thuộc tính mà khi được đặt thành false, sẽ trả về email theo thứ tự giảm dần.
Mã ví dụ sau đây minh họa cách sử dụng AscendingSorting thuộc tính của PageSettings lớp để thay đổi thứ tự của email.
Lưu tin nhắn ở định dạng MSG
Để lưu email ở định dạng MSG, ImapClient.FetchMessage() phương thức cần được gọi. Nó trả về tin nhắn dưới dạng một thể hiện của MailMessage lớp. MailMessage.Save() phương thức sau đó có thể được gọi để lưu tin nhắn thành MSG. Đoạn mã sau đây cho bạn thấy cách lưu tin nhắn ở định dạng MSG.
Nhóm Các Tin Nhắn Đã Lấy
ImapClient cung cấp một FetchMessages phương thức nhận một iterable của Số thứ tự hoặc ID duy nhất và trả về một danh sách của MailMessage. Đoạn mã sau minh họa việc sử dụng FetchMessages phương thức để lấy tin nhắn bằng Số thứ tự và ID duy nhất.
Lấy Thư Mục và Đọc Tin Nhắn Đệ Quy
Trong bài viết này, phần lớn các ImapClient các tính năng được sử dụng để tạo một ứng dụng liệt kê tất cả các thư mục và thư mục con một cách đệ quy từ máy chủ IMAP. Nó cũng lưu các tin nhắn trong mỗi thư mục và thư mục con ở định dạng MSG trên ổ đĩa cục bộ. Trên đĩa, các thư mục và tin nhắn được tạo và lưu trong cùng cấu trúc phân cấp như trên máy chủ IMAP. Đoạn mã dưới đây cho bạn thấy cách lấy thông tin các tin nhắn và thư mục con một cách đệ quy.
Xử lý Thông tin Tin nhắn Đặc biệt
Truy xuất các Tham số Bổ sung dưới dạng Thông tin Tóm tắt
Lấy Thông tin Header List-Unsubscribe
Tiêu đề List-Unsubscribe chứa URL để hủy đăng ký các danh sách email như quảng cáo, bản tin, v.v. Để lấy tiêu đề List-Unsubscribe, sử dụng ListUnsubscribe thuộc tính của ImapMessageInfo lớp. Ví dụ sau đây cho thấy cách sử dụng ListUnsubscribe thuộc tính để lấy tiêu đề List-Unsubscribe.