Работа с почтовым ящиком Exchange и сообщениями

Получение информации о почтовом ящике с использованием EWS

Вы можете получить информацию о почтовом ящике с сервера Exchange, вызвав метод GetMailboxInfo класса IEWSClient. Он возвращает экземпляр типа ExchangeMailboxInfo. Получите информацию о почтовом ящике из свойств, таких как MailboxUri, InboxUri и DraftsUri. Эта статья показывает, как получить доступ к информации о почтовом ящике с использованием Exchange Web Services.

Для подключения к серверу Exchange с использованием Exchange Web Services (EWS) используйте класс IEWSClient. Этот класс использует EWS для подключения и управления элементами на сервере Exchange. Следующий кодовый Snippet показывает, как получить информацию о почтовом ящике с использованием обменных веб-сервисов.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Get mailbox size, exchange mailbox info, Mailbox and Inbox folder URI
System::Console::WriteLine(System::String(u"Mailbox size: ") + client->GetMailboxSize() + u" bytes");
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo();
System::Console::WriteLine(System::String(u"Mailbox URI: ") + mailboxInfo->get_MailboxUri());
System::Console::WriteLine(System::String(u"Inbox folder URI: ") + mailboxInfo->get_InboxUri());
System::Console::WriteLine(System::String(u"Sent Items URI: ") + mailboxInfo->get_SentItemsUri());
System::Console::WriteLine(System::String(u"Drafts folder URI: ") + mailboxInfo->get_DraftsUri());

Отправка электронных сообщений

Вы можете отправлять электронные сообщения с использованием сервера Exchange с помощью метода IEWSClient->Send(), который принимает экземпляр MailMessage в качестве параметра и отправляет электронное письмо. Эта статья объясняет, как отправлять электронные сообщения с использованием Exchange Web Services.

Следующий кодовый Snippet показывает, как отправить электронные сообщения с использованием IEWSClient.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Create instance of type MailMessage
System::SharedPtr<MailMessage> msg = System::MakeObject<MailMessage>();
msg->set_From(MailAddress::to_MailAddress(u"sender@domain.com"));
msg->set_To(MailAddressCollection::to_MailAddressCollection(u"recipient@ domain.com "));
msg->set_Subject(u"Sending message from exchange server");
msg->set_HtmlBody(u"<h3>sending message from exchange server</h3>");
// Send the message
client->Send(msg);

Чтение электронных писем из почтового ящика другого пользователя

Некоторые учетные записи на серверах Exchange имеют право доступа к нескольким почтовым ящикам, и некоторые пользователи имеют несколько учетных записей электронной почты на одном сервере Exchange. В обоих случаях пользователи могут получать доступ к почтовым ящикам других пользователей с помощью Aspose.Email. Этот API предоставляет механизм для доступа к папкам и электронным письмам из других почтовых ящиков с использованием класса IEWSClient. Эта функциональность может быть достигнута с использованием перегруженного метода GetMailboxInfo() и предоставлением адреса электронной почты пользователя в качестве параметра.

Следующий кодовый Snippet показывает, как читать электронные письма с использованием класса IEWSClient.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Get Exchange mailbox info of other email account
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo(u"otherUser@domain.com");

Список сообщений

Список электронных сообщений в почтовом ящике Exchange можно получить, вызвав метод ListMessages. Получите основную информацию о сообщениях, такую как тему, отправителя, получателя и идентификатор сообщения, используя метод ListMessages.

Простой список сообщений

Чтобы перечислить сообщения в почтовом ящике Exchange:

  1. Создайте экземпляр класса IEWSClient.
  2. Вызовите метод ListMessages, чтобы получить коллекцию сообщений.
  3. Пройдите через коллекцию и отображайте информацию о сообщениях.

Следующий кодовый Snippet показывает, как подключиться к серверу Exchange с использованием EWS и перечислить сообщения из папки «Входящие».

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of ExchangeWebServiceClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
// Loop through the collection to display the basic information
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::Console::WriteLine(System::String(u"Subject: ") + msgInfo->get_Subject());
if (msgInfo->get_From() != nullptr)
System::Console::WriteLine(System::String(u"From: ") + msgInfo->get_From()->ToString());
System::Console::WriteLine(System::String(u"To: ") + msgInfo->get_To()->ToString());
System::Console::WriteLine(System::String(u"Message ID: ") + msgInfo->get_MessageId());
System::Console::WriteLine(System::String(u"Unique URI: ") + msgInfo->get_UniqueUri());
}

Перечисление сообщений из разных папок

Вышеуказанный кодовый Snippet перечисляет все сообщения в папке «Входящие». Также возможно получить список сообщений из других папок. Метод ListMessages принимает URI папки в качестве параметра. При условии, что URI папки действителен, вы можете получить список сообщений из этой папки. Используйте IEWSClient->get_MailboxInfo->xxxFolderUri свойство, чтобы получить URI различных папок. Остальная часть кода такая же, как для получения списка сообщений. Следующий кодовый Snippet показывает, как перечислить сообщения из разных папок с использованием EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Get folder URI
System::String strFolderURI = System::String::Empty;
strFolderURI = client->get_MailboxInfo()->get_InboxUri();
strFolderURI = client->get_MailboxInfo()->get_DeletedItemsUri();
strFolderURI = client->get_MailboxInfo()->get_DraftsUri();
strFolderURI = client->get_MailboxInfo()->get_SentItemsUri();
// Get list of messages from the specified folder
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(strFolderURI);

Перечисление сообщений с поддержкой постраничного вывода

Следующий кодонов Snippet показывает, как получить список сообщений с поддержкой постраничного вывода.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Create some test messages to be added to server for retrieval later
int32_t messagesNum = 12;
int32_t itemsPerPage = 5;
System::SharedPtr<MailMessage> message;
for (int32_t i = 0; i < messagesNum; i++)
{
message = System::MakeObject<MailMessage>(u"from@domain.com", u"to@domain.com", System::String(u"EMAILNET-35157_1 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-35157 Move paging parameters to separate class");
client->AppendMessage(client->get_MailboxInfo()->get_InboxUri(), message);
}
// Verfiy that the messages have been added to the server
System::SharedPtr<ExchangeMessageInfoCollection> totalMessageInfoCol = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
System::Console::WriteLine(totalMessageInfoCol->get_Count());
/// /////////////// RETREIVING THE MESSAGES USING PAGING SUPPORT ////////////////////////////////////
System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<ExchangeMessagePageInfo>>> pages = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<ExchangeMessagePageInfo>>>();
System::SharedPtr<ExchangeMessagePageInfo> pageInfo = client->ListMessagesByPage(client->get_MailboxInfo()->get_InboxUri(), itemsPerPage);
// Total Pages Count
System::Console::WriteLine(pageInfo->get_TotalCount());
pages->Add(pageInfo);
while (!pageInfo->get_LastPage())
{
pageInfo = client->ListMessagesByPage(client->get_MailboxInfo()->get_InboxUri(), itemsPerPage, pageInfo->get_PageOffset() + 1);
pages->Add(pageInfo);
}
int32_t retrievedItems = 0;
for (auto pageCol : System::IterateOver(pages))
{
retrievedItems += pageCol->get_Items()->get_Count();
}
// Verify total message count using paging
System::Console::WriteLine(retrievedItems);

Получение информации о типах сообщений из ExchangeMessageInfo

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
const System::String mailboxUri = u"https://exchange/ews/exchange.asmx";
const System::String domain = u"";
const System::String username = u"username@ASE305.onmicrosoft.com";
const System::String password = u"password";
System::SharedPtr<System::Net::NetworkCredential> credentials = System::MakeObject<System::Net::NetworkCredential>(username, password, domain);
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<ExchangeMessageInfoCollection> list = client->ListMessages(client->get_MailboxInfo()->get_DeletedItemsUri());
System::Console::WriteLine(System::ObjectExt::ToString(list->idx_get(0)->get_MessageInfoType()));

Сохранение сообщений

Эта статья показывает, как получить сообщения из почтового ящика сервера Exchange и сохранить их на диск в форматах EML и MSG:

  • Сохранить в формате EML на диске.
  • Сохранить в потоке памяти.
  • Сохранить в формате MSG.

Сохранение сообщений в формате EML

Чтобы получить сообщения и сохранить в формате EML:

  1. Создайте экземпляр класса IEWSClient.
  2. Укажите mailboxUri, имя пользователя, пароль и домен.
  3. Вызовите метод IEWSClient->ListMessages(), чтобы получить экземпляр коллекции ExchangeMessagesInfoCollection.
  4. Пройдите через коллекцию ExchangeMessagesInfoCollection, чтобы получить уникальный URI для каждого сообщения.
  5. Вызовите метод IEWSClient->SaveMessage() и передайте уникальный URI и место сохранения в качестве параметров.

Следующий кодовый Snippet показывает, как использовать EWS для подключения к серверу Exchange и сохранения сообщений в виде файлов EML.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::String dataDir = GetDataDir_Exchange();
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
// Loop through the collection to get Message URI
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::String strMessageURI = msgInfo->get_UniqueUri();
// Now save the message in disk
client->SaveMessage(strMessageURI, dataDir + msgInfo->get_MessageId() + u"out.eml");
}

Сохранение сообщений в поток памяти

Вместо того, чтобы сохранять файлы EML на диск, их можно сохранить в поток памяти. Это полезно, когда вы хотите сохранить поток в каком-то месте хранения, например, в базе данных. После того как поток был сохранен в базе данных, вы можете перезагрузить файл EML в классе MailMessage. Следующий кодовый Snippet показывает, как сохранить сообщения из почтового ящика сервера Exchange в поток памяти с использованием EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
// Loop through the collection to get Message URI
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::String strMessageURI = msgInfo->get_UniqueUri();
// Now save the message in memory stream
System::SharedPtr<System::IO::MemoryStream> stream = System::MakeObject<System::IO::MemoryStream>();
client->SaveMessage(strMessageURI, datadir + stream);
}

Сохранение сообщений в формате MSG

Метод IEWSClient->SaveMessage() может напрямую сохранить сообщение в формате EML. Чтобы сохранить сообщения в формате MSG, сначала вызовите метод IEWSClient->FetchMessage(), который возвращает экземпляр класса MailMessage. Затем вызовите метод MailMessage->Save(), чтобы сохранить сообщение в MSG. Следующий кодовый Snippet показывает, как получить сообщения из почтового ящика сервера Exchange и сохранить их в формате MSG с использованием EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
int32_t count = 0;
// Loop through the collection to get Message URI
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::String strMessageURI = msgInfo->get_UniqueUri();
// Now get the message details using FetchMessage() and Save message as Msg
System::SharedPtr<MailMessage> message = client->FetchMessage(strMessageURI);
message->Save(dataDir + (count++) + u"_out.msg", SaveOptions::get_DefaultMsgUnicode());
}

Получение ExchangeMessageInfo из URI сообщения

Электронное сообщение представляется своим уникальным идентификатором, URI, и является неотъемлемой частью объекта ExchangeMessageInfo. В случае, если доступен только URI сообщения, объект ExchangeMessageInfo также можно получить с помощью этой доступной информации. Перегруженная версия метода ListMessages принимает список идентификаторов и возвращает коллекцию ExchangeMessageInfoCollection. Следующий кодовый Snippet показывает, как получить ExchangeMessageInfo из URI сообщения.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<System::Collections::Generic::List<System::String>> ids = System::MakeObject<System::Collections::Generic::List<System::String>>();
System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<MailMessage>>> messages = System::MakeObject<System::Collections::Generic::List<System::SharedPtr<MailMessage>>>();
for (int32_t i = 0; i < 5; i++)
{
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(u"user@domain.com", u"receiver@domain.com", System::String(u"EMAILNET-35033 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-35033 Messages saved from Sent Items folder doesn't contain 'To' field");
messages->Add(message);
System::String uri = client->AppendMessage(message);
ids->Add(uri);
}
System::SharedPtr<ExchangeMessageInfoCollection> messageInfoCol = client->ListMessages(ids);
for (auto messageInfo : System::IterateOver(messageInfoCol))
{
// Do something ...
System::Console::WriteLine(messageInfo->get_UniqueUri());
}

Получение сообщений из почтового ящика сервера Exchange

Метод ListMessages() используется для получения списка сообщений из почтового ящика сервера Exchange. Метод ListMessages() получает основную информацию о сообщениях, например, тему, идентификатор сообщения, отправителя и получателя. Чтобы получить полные данные о сообщении, Aspose.Email предоставляет метод IEWSClient->FetchMessage(). Этот метод принимает URI сообщения в качестве параметра и возвращает экземпляр класса MailMessage. Класс MailMessage затем предоставляет детали сообщения, такие как текст, заголовки и вложения. Чтобы получить сообщения из почтового ящика сервера Exchange:

  1. Создайте экземпляр типа IEWSClient.
  2. Укажите имя сервера, имя пользователя, пароль и домен.
  3. Вызовите метод IEWSClient->ListMessages(), чтобы получить ExchangeMessagesInfoCollection.
  4. Пройдите через коллекцию ExchangeMessagesInfoCollection, чтобы получить значения ExchangeMessageInfo->get_UniqueUri().
  5. Вызовите IEWSClient->FetchMessage() и передайте ExchangeMessageInfo->get_UniqueUri() в качестве параметра.

Следующий кодовый Snippet демонстрирует получение всех сообщений с использованием EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of ExchangeWebServiceClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
// Loop through the collection to get Message URI
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::String strMessageURI = msgInfo->get_UniqueUri();
// Now get the message details using FetchMessage()
System::SharedPtr<MailMessage> msg = client->FetchMessage(strMessageURI);
for (auto att : System::IterateOver(msg->get_Attachments()))
{
System::Console::WriteLine(System::String(u"Attachment Name: ") + att->get_Name());
}
}

Предварительное получение размера сообщения

Microsoft Outlook InterOp предоставляет возможность извлечения размера сообщения перед фактическим получением полного сообщения с сервера. В случае API Aspose.Email сводная информация, полученная с обменного сервера, представлена классом ExchangeMessageInfo. Он предоставляет возможность получения размера сообщения с помощью свойства Size. Для получения размера сообщения стандартный вызов IEWSClient->ListMessages() используется для извлечения ExchangeMessagesInfoCollection. Следующий кодовый Snippet показывает, как отобразить размер сообщения с использованием класса ExchangeMessageInfo.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of ExchangeWebServiceClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
// Call ListMessages method to list messages info from Inbox
System::SharedPtr<ExchangeMessageInfoCollection> msgCollection = client->ListMessages(client->get_MailboxInfo()->get_InboxUri());
// Loop through the collection to display the basic information
for (auto msgInfo : System::IterateOver(msgCollection))
{
System::Console::WriteLine(System::String(u"Subject: ") + msgInfo->get_Subject());
if (msgInfo->get_From() != nullptr)
System::Console::WriteLine(System::String(u"From: ") + msgInfo->get_From()->ToString());
if (msgInfo->get_To() != nullptr)
System::Console::WriteLine(System::String(u"To: ") + msgInfo->get_To()->ToString());
System::Console::WriteLine(System::String(u"Message Size: ") + msgInfo->get_Size());
System::Console::WriteLine(u"==================================");
}

Загрузка сообщений из общих папок

Microsoft Exchange Server позволяет пользователям создавать общие папки и размещать в них сообщения. Чтобы сделать это через ваше приложение, используйте класс Aspose.Email EWSClient, чтобы подключиться к серверу Exchange и читать и загружать сообщения и записи из общих папок. Следующий кодовый Snippet показывает, как читать все общие папки и подпапки, а также перечислять и загружать любые сообщения, найденные в этих папках. Этот пример работает только с Microsoft Exchange Server 2007 и выше, поскольку только они поддерживают EWS.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
static String dataDir = GetDataDir_Exchange();
String username;
String password;
String domain;
String mailboxUri;
void ListMessagesFromSubFolder(System::SharedPtr<Aspose::Email::Clients::Exchange::ExchangeFolderInfo> publicFolder, System::SharedPtr<Aspose::Email::Clients::Exchange::WebService::IEWSClient> client)
{
System::Console::WriteLine(System::String(u"Folder Name: ") + publicFolder->get_DisplayName());
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoCollection = client->ListMessagesFromPublicFolder(publicFolder);
for (auto messageInfo : System::IterateOver(msgInfoCollection))
{
System::SharedPtr<MailMessage> msg = client->FetchMessage(messageInfo->get_UniqueUri());
System::Console::WriteLine(msg->get_Subject());
msg->Save(dataDir + msg->get_Subject() + u".msg", SaveOptions::get_DefaultMsgUnicode());
}
// Call this method recursively for any subfolders
if (publicFolder->get_ChildFolderCount() > 0)
{
System::SharedPtr<ExchangeFolderInfoCollection> subfolders = client->ListSubFolders(publicFolder);
for (System::SharedPtr<Aspose::Email::Clients::Exchange::ExchangeFolderInfo> subfolder : System::IterateOver(subfolders))
{
ListMessagesFromSubFolder(subfolder, client);
}
}
}
void ReadPublicFolders()
{
System::SharedPtr<System::Net::NetworkCredential> credential = System::MakeObject<System::Net::NetworkCredential>(username, password, domain);
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<ExchangeFolderInfoCollection> folders = client->ListPublicFolders();
for (auto publicFolder : System::IterateOver(folders))
{
System::Console::WriteLine(System::String(u"Name: ") + publicFolder->get_DisplayName());
System::Console::WriteLine(System::String(u"Subfolders count: ") + publicFolder->get_ChildFolderCount());
ListMessagesFromSubFolder(publicFolder, client);
}
}
void DownloadMessagesFromPublicFolders()
{
try
{
ReadPublicFolders();
}
catch (System::Exception& ex)
{
System::Console::WriteLine(ex.get_Message());
}
}

Перемещение сообщений

Вы можете перемещать электронные сообщения из одной папки в другую с помощью метода IEWSClient Move. Он принимает следующие параметры:

  • Уникальный URI сообщения, которое необходимо переместить.
  • Уникальный URI папки назначения.

Перемещение сообщений между папками

Следующий кодовый Snippet показывает, как переместить сообщение в почтовом ящике из папки «Входящие» в папку под названием «Обработано». В этом примере приложение:

  1. Читает сообщения из папки «Входящие».
  2. Обрабатывает некоторые сообщения на основе определенных критериев (в этом примере мы находим ключевое слово в теме сообщения).
  3. Перемещает сообщения, которые соответствуют данному условию, в папку «Обработано».
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo();
// List all messages from Inbox folder
System::Console::WriteLine(u"Listing all messages from Inbox....");
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoColl = client->ListMessages(mailboxInfo->get_InboxUri());
for (auto msgInfo : System::IterateOver(msgInfoColl))
{
// Move message to "Processed" folder, after processing certain messages based on some criteria
if (msgInfo->get_Subject() != nullptr && msgInfo->get_Subject().ToLower().Contains(u"process this message") == true)
{
client->MoveItem(mailboxInfo->get_DeletedItemsUri(), msgInfo->get_UniqueUri());
// EWS
System::Console::WriteLine(System::String(u"Message moved....") + msgInfo->get_Subject());
}
else { }
}

Удаление сообщений

Вы можете удалить электронные сообщения из папки с помощью метода IEWSClient->DeleteMessage. Он принимает уникальный URI сообщения в качестве параметра.

Следующий кодовый Snippet показывает, как удалить сообщение из папки «Входящие». В этом примере код:

  1. Читает сообщения из папки «Входящие».
  2. Обрабатывает сообщения на основе определенных критериев (в этом примере мы находим ключевое слово в теме сообщения).
  3. Удаляет сообщение.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
// Create instance of IEWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<ExchangeMailboxInfo> mailboxInfo = client->GetMailboxInfo();
// List all messages from Inbox folder
System::Console::WriteLine(u"Listing all messages from Inbox....");
System::SharedPtr<ExchangeMessageInfoCollection> msgInfoColl = client->ListMessages(mailboxInfo->get_InboxUri());
for (auto msgInfo : System::IterateOver(msgInfoColl))
{
// Delete message based on some criteria
if (msgInfo->get_Subject() != nullptr && msgInfo->get_Subject().ToLower().Contains(u"delete") == true)
{
client->DeleteMessage(msgInfo->get_UniqueUri());
// EWS
System::Console::WriteLine(System::String(u"Message deleted....") + msgInfo->get_Subject());
}
else { }
}

Копирование сообщений

API Aspose.Email позволяет копировать сообщение из одной папки в другую с помощью метода IEWSClient->CopyItem. Перегруженная версия этого метода возвращает уникальный URI скопированного сообщения, как показано в этой статье.

Копирование сообщения в другую папку

Следующий кодовый Snippet показывает, как скопировать сообщение в другую папку.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C
try
{
// Create instance of EWSClient class by giving credentials
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser());
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>(u"from@domain.com", u"to@domain.com", System::String(u"EMAILNET-34997 - ") + System::ObjectExt::ToString(System::Guid::NewGuid()), u"EMAILNET-34997 Exchange: Copy a message and get reference to the new Copy item");
System::String messageUri = client->AppendMessage(message);
System::String newMessageUri = client->CopyItem(messageUri, client->get_MailboxInfo()->get_DeletedItemsUri());
}
catch (System::Exception& ex)
{
System::Console::WriteLine(ex.get_Message());
}