Trabalhando com Caixa de Correio e Mensagens do Exchange

Obtendo Informações da Caixa de Correio Usando EWS

Você pode obter informações da caixa de correio de um servidor Exchange chamando o método GetMailboxInfo da classe IEWSClient. Ele retorna uma instância do tipo ExchangeMailboxInfo. Obtenha informações da caixa de correio a partir de propriedades como MailboxUri, InboxUri e DraftsUri. Este artigo mostra como acessar informações da caixa de correio usando os Serviços Web do Exchange.

Para se conectar ao servidor Exchange usando os Serviços Web do Exchange (EWS), use a classe IEWSClient. Esta classe usa EWS para se conectar e gerenciar itens em um servidor Exchange. O seguinte trecho de código mostra como obter informações da caixa de correio usando os serviços web do exchange.

// 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());

Enviando Mensagens de Email

Você pode enviar mensagens de email usando um servidor Exchange com o método IEWSClient->Send() que aceita uma instância de MailMessage como parâmetro e envia o email. Este artigo explica como enviar mensagens de email usando os Serviços Web do Exchange.

O seguinte trecho de código mostra como enviar mensagens de email usando 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);

Lendo Emails da Caixa de Correio de Outro Usuário

Algumas contas em servidores Exchange têm o direito de acessar várias caixas de correio, e alguns usuários têm várias contas de email no mesmo servidor Exchange. Em ambos os casos, os usuários podem acessar as caixas de correio de outros usuários usando Aspose.Email. Esta API fornece um mecanismo para acessar pastas e emails de outras caixas de correio usando a classe IEWSClient. Essa funcionalidade pode ser alcançada usando o método sobrecarregado GetMailboxInfo() e fornecendo o endereço de email do usuário como parâmetro.

O seguinte trecho de código mostra como ler emails usando a classe 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");

Listando Mensagens

Uma lista das mensagens de email em uma caixa de correio do Exchange pode ser obtida chamando o método ListMessages. Obtenha as informações básicas sobre as mensagens, como assunto, de, para e ID da mensagem, usando o método ListMessages.

Listagem Simples de Mensagens

Para listar as mensagens em uma caixa de correio do Exchange:

  1. Crie uma instância da classe IEWSClient.
  2. Chame o método ListMessages para obter a coleção de mensagens.
  3. Percorra a coleção e exiba as informações da mensagem.

O seguinte trecho de código mostra como se conectar a um servidor exchange usando EWS e listar mensagens da pasta de entrada.

// 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());
}

Listando Mensagens de Pastas Diferentes

O trecho de código acima lista todas as mensagens na pasta de entrada. É possível obter a lista de mensagens de outras pastas também. O método ListMessages aceita uma URI de pasta como parâmetro. Desde que a URI da pasta seja válida, você pode obter a lista de mensagens dessa pasta. Use o IEWSClient->get_MailboxInfo->xxxFolderUri propriedade para obter a URI de diferentes pastas. O resto do código é o mesmo que para obter uma lista de mensagens. O seguinte trecho de código mostra como listar mensagens de pastas diferentes usando 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);

Listando Mensagens com Suporte a Paginação

O seguinte trecho de código mostra como obter uma lista de mensagens com suporte a paginação.

// 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);

Obtendo Informações do Tipo da Mensagem a partir do 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()));

Salvando Mensagens

Este artigo mostra como obter mensagens de uma caixa de correio de servidor Exchange e salvá-las no disco nos formatos EML e MSG:

  • Salvar como EML no disco.
  • Salvar em fluxo de memória.
  • Salvar como MSG.

Salvando Mensagens em EML

Para obter mensagens e salvar em formato EML:

  1. Crie uma instância da classe IEWSClient.
  2. Forneça a mailboxUri, nome de usuário, senha e domínio.
  3. Chame o método IEWSClient->ListMessages() para obter uma instância da coleção ExchangeMessagesInfoCollection.
  4. Percorra a coleção ExchangeMessagesInfoCollection para obter a URI única para cada mensagem.
  5. Chame o método IEWSClient->SaveMessage() e passe a URI única e o local de salvamento como parâmetros.

O seguinte trecho de código mostra como usar EWS para se conectar ao servidor Exchange e salvar mensagens como arquivos 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");
}

Salvando Mensagens em um Fluxo de Memória

Em vez de salvar arquivos EML no disco, é possível salvá-los em um fluxo de memória. Isso é útil quando você deseja salvar o fluxo em algum local de armazenamento, como um banco de dados. Uma vez que o fluxo foi salvo em um banco de dados, você pode recarregar o arquivo EML na classe MailMessage. O seguinte trecho de código mostra como salvar mensagens de uma caixa de correio de servidor Exchange em um fluxo de memória usando 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);
}

Salvando Mensagens em Formato MSG

O método IEWSClient->SaveMessage() pode salvar diretamente a mensagem em formato EML. Para salvar as mensagens em formato MSG, primeiro, chame o método IEWSClient->FetchMessage() que retorna uma instância da classe MailMessage. Em seguida, chame o método MailMessage->Save() para salvar a mensagem em MSG. O seguinte trecho de código mostra como obter mensagens de uma caixa de correio de servidor Exchange e salvá-las no formato MSG usando 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());
}

Obtendo ExchangeMessageInfo da URI da Mensagem

Uma mensagem de email é representada por seu identificador único, URI, e é uma parte integral do objeto ExchangeMessageInfo. No caso de apenas a URI da mensagem estar disponível, o objeto ExchangeMessageInfo também pode ser recuperado usando essa informação disponível. A versão sobrecarregada de ListMessages aceita uma lista de IDs e retorna uma coleção de ExchangeMessageInfoCollection. O seguinte trecho de código mostra como obter ExchangeMessageInfo da URI da mensagem.

// 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());
}

Buscar Mensagens de uma Caixa de Correio do Servidor Exchange

O método ListMessages() é usado para obter uma lista de mensagens de uma caixa de correio do servidor Exchange. O método ListMessages() obtém informações básicas sobre as mensagens, como o assunto, o ID da mensagem, de e para. Para obter os detalhes completos da mensagem, Aspose.Email fornece o método IEWSClient->FetchMessage(). Este método aceita a URI da mensagem como parâmetro e retorna uma instância da classe MailMessage. A classe MailMessage fornece detalhes da mensagem, como o corpo, cabeçalhos e anexos. Para buscar mensagens da caixa de correio do servidor Exchange:

  1. Crie uma instância do tipo IEWSClient.
  2. Especifique o nome do servidor, nome de usuário, senha e domínio.
  3. Chame o método IEWSClient->ListMessages() para obter a ExchangeMessagesInfoCollection.
  4. Percorra a coleção ExchangeMessagesInfoCollection para obter os valores de ExchangeMessageInfo->get_UniqueUri().
  5. Chame IEWSClient->FetchMessage() e passe ExchangeMessageInfo->get_UniqueUri() como parâmetro.

O seguinte trecho de código demonstra como buscar todas as mensagens usando 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());
}
}

Pré-Busca do Tamanho da Mensagem

O Microsoft Outlook InterOp fornece o recurso de recuperar o tamanho da mensagem antes de realmente buscar a mensagem completa do servidor. No caso da API Aspose.Email, as informações resumidas recuperadas do servidor Exchange são representadas pela classe ExchangeMessageInfo. Ela fornece o recurso de recuperar o tamanho da mensagem usando a propriedade Size. Para recuperar o tamanho da mensagem, a chamada padrão para IEWSClient->ListMessages() é usada para recuperar a ExchangeMessagesInfoCollection. O seguinte trecho de código mostra como exibir o tamanho da mensagem usando a classe 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"==================================");
}

Baixar Mensagens de Pastas Públicas

O Microsoft Exchange Server permite que os usuários criem pastas públicas e publiquem mensagens nelas. Para fazer isso por meio de seu aplicativo, use a classe EWSClient do Aspose.Email para se conectar ao servidor Exchange e ler e baixar mensagens e postagens de pastas públicas. O seguinte trecho de código mostra como ler todas as pastas públicas e subpastas, e listar e baixar quaisquer mensagens encontradas nessas pastas. Este exemplo funciona apenas com o Microsoft Exchange Server 2007 ou superior, já que apenas esses suportam 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());
}
}

Movendo Mensagens

Você pode mover mensagens de email de uma pasta para outra com a ajuda do método Move da classe IEWSClient. Ele aceita os seguintes parâmetros:

  • A URI única da mensagem que deve ser movida.
  • A URI única da pasta de destino.

Movendo Mensagens entre Pastas

O seguinte trecho de código mostra como mover uma mensagem em uma caixa de correio da pasta de Entrada para uma pasta chamada Processada. Neste exemplo, o aplicativo:

  1. Lê mensagens da pasta de Entrada.
  2. Processa algumas das mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
  3. Move mensagens que atendem à condição dada para a pasta processada.
// 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 { }
}

Excluindo Mensagens

Você pode excluir mensagens de email de uma pasta com a ajuda do método IEWSClient->DeleteMessage. Ele aceita a URI única da mensagem como parâmetro.

O seguinte trecho de código mostra como excluir uma mensagem da pasta de Entrada. Para os propósitos deste exemplo, o código:

  1. Lê mensagens da pasta de Entrada.
  2. Processa mensagens com base em alguns critérios (neste exemplo, encontramos uma palavra-chave no assunto da mensagem).
  3. Exclui a mensagem.
// 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 { }
}

Copiando Mensagens

A API Aspose.Email permite copiar uma mensagem de uma pasta para outra usando o método IEWSClient->CopyItem. A versão sobrecarregada deste método retorna a URI única da mensagem copiada, conforme mostrado neste artigo.

Copiando uma Mensagem para Outra Pasta

O seguinte trecho de código mostra como copiar uma mensagem para outra pasta.

// 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());
}