Работа с сообщениями с сервера IMAP
Получение идентификационной информации для сообщений, полученных из почтового ящика
При получении и обработке сообщений электронной почты вы можете получить сведения об этих сообщениях, используя их порядковые номера. Для взаимодействия с почтовым ящиком IMAP используются следующие функции:
-
Aspose.Email.MailboxInfo
class — представляет идентификационную информацию о сообщении в почтовом ящике.-
Aspose.Email.MailboxInfo.SequenceNumber
свойство - порядковый номер сообщения. -
Aspose.Email.MailboxInfo.UniqueId
свойство - уникальный идентификатор сообщения.
-
-
Aspose.Email.MailMessage.ItemId
свойство — представляет идентификационную информацию о сообщении в почтовом ящике.
В приведенном ниже фрагменте кода показано, как получить идентификационную информацию о сообщениях:
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
var msgs = client.ListMessages("INBOX").Take(5);
var seqIds = msgs.Select(t => t.SequenceNumber);
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}");
}
}
Отображение идентификаторов сообщений MIME с сервера
ImapMessageInfo предоставляет MIME MessageId для идентификации сообщения без извлечения всего сообщения. В следующем фрагменте кода показано, как указать MIME MessageID.
Список сообщений с сервера
Aspose.Email предоставляет перегруженный вариант из 2 человек ListMessages() для получения заданного количества сообщений на основе запроса. В следующем фрагменте кода показано, как составить список сообщений.
Рекурсивный список сообщений с сервера
Протокол IMAP поддерживает рекурсивный список сообщений из папки почтового ящика. Это также помогает отображать сообщения из подпапок папки. В следующем фрагменте кода показано, как рекурсивно перечислять сообщения.
Список сообщений с помощью MultiConnection
ImapClient обеспечивает UseMultiConnection свойство, которое можно использовать для создания нескольких соединений для тяжелых операций. Вы также можете настроить количество подключений, которое будет использоваться в режиме нескольких подключений, используя ImapClient.ConnectionsQuantity. В следующем фрагменте кода показано использование режима нескольких подключений для перечисления сообщений и сравнивается его производительность с режимом одиночного подключения.
Получайте сообщения в порядке убывания
Aspose.Email предоставляет ImapClient.ListMessagesByPage
метод, который перечисляет сообщения с поддержкой пейджинга. Некоторые перегрузки ImapClient.ListMessagesByPage
accept PageSettings
в качестве параметра. PageSettings
обеспечивает AscendingSorting
свойство, которое, если установлено значение false, возвращает электронные письма в порядке убывания.
Следующий пример кода демонстрирует использование AscendingSorting собственность PageSettings класс для изменения порядка писем.
Получение сообщений с сервера и сохранение на диск
The ImapClient класс может получать сообщения с сервера IMAP и сохранять сообщения в формате EML на локальный диск. Для сохранения сообщений на диск необходимо выполнить следующие шаги:
- Создайте экземпляр ImapClient class.
- Укажите имя хоста, порт, имя пользователя и пароль в iMapClient constructor.
- Выберите папку, используя SelectFolder() method.
- Позвоните ListMessages метод получения ImapMessageInfoCollection object.
- Пройдите итерацию через ImapMessageInfoCollection коллекция, позвоните в SaveMessage() метод и укажите выходной путь и имя файла.
В следующем фрагменте кода показано, как получать сообщения электронной почты с сервера и сохранять их.
Сохранение сообщений в формате MSG
В приведенном выше примере, электронные письма сохраняются в формате EML. Чтобы сохранить электронные письма в формате MSG, ImapClient.FetchMessage() метод должен быть вызван. Он возвращает сообщение в экземпляре MailMessage класс. MailMessage.Save() Затем можно вызвать метод для сохранения сообщения в MSG. В следующем фрагменте кода показано, как сохранять сообщения в формате MSG.
Групповая выборка сообщений
ImapClient обеспечивает FetchMessages метод, который принимает итерацию последовательных номеров или уникальных идентификаторов и возвращает список MailMessage. Следующий фрагмент кода демонстрирует использование FetchMessages метод получения сообщений по порядковым номерам и уникальному идентификатору.
Список сообщений с поддержкой пейджинга
В сценариях, когда почтовый сервер содержит большое количество сообщений в почтовом ящике, часто требуется перечислить или получить сообщения с поддержкой пейджинга. API Aspose.Email ImapClient позволяет получать сообщения с сервера с поддержкой пейджинга.
Список вложений к сообщениям
Чтобы получить информацию о вложениях, таких как имя и размер, без извлечения данных вложения, попробуйте использовать следующие API:
- Aspose.Email.Clients.Imap.ImapAttachmentInfo - Представляет собой информацию о вложении.
- Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Представляет собой коллекцию ImapAttachmentInfo class.
- Вложения aspose.email.clients.imap.List (целочисленный порядковый номер) - Получает информацию о каждом вложении в сообщении.
Пример кода со следующими шагами покажет вам, как использовать API:
-
Позвоните ListMessages() метод на объекте IMapClient. Этот метод вернет коллекцию IMapMessageInfoCollection, содержащую информацию о сообщениях в почтовом ящике.
-
Просмотрите каждое сообщение в коллекции MessageInfoCollection, используя цикл foreach.
-
Позвоните ListAttachments() метод на объекте IMapClient, передающий свойство SequenceNumber объекта сообщения в качестве параметра. Этот метод вернет коллекцию IMAPAttachmentInfoCollection, содержащую информацию о вложениях в сообщении.
-
Просмотрите каждое вложение в коллекции AttachmentInfoCollection, используя цикл foreach.
-
Во внутреннем цикле вы можете получить доступ к информации о каждом вложении, используя свойства объекта AttachmentInfo. В этом примере имя и размер каждого вложения регистрируются в консоли с помощью
Console.WriteLine()
.Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
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);
}
}
Получение папок и рекурсивное чтение сообщений
В этой статье большинство ImapClient функции используются для создания приложения, рекурсивно перечисляющего все папки и подпапки с сервера IMAP. Оно также сохраняет сообщения в каждой папке и подпапке в формате MSG на локальном диске. На диске папки и сообщения создаются и сохраняются в той же иерархической структуре, что и на сервере IMAP. В следующем фрагменте кода показано, как рекурсивно получать информацию о сообщениях и подпапках.
Получение дополнительных параметров в виде сводной информации
Получение информации в заголовке списка «Отказаться от подписки»
Заголовок List-Unsubscribe содержит URL-адрес для отказа от подписки на списки рассылки, например на рекламные объявления, информационные бюллетени и т. д. Чтобы получить заголовок List-Unsubscribe, используйте ListUnsubscribe собственность ImapMessageInfo класс. В следующем примере показано использование ListUnsubscribe свойство для получения заголовка List-Unsubscribe.