Filtrar Mensagens da Caixa de Correio do Exchange
Filtrando Mensagens
Para obter mensagens filtradas de uma caixa de correio:
- Conecte-se ao servidor Exchange.
- Crie uma instância de MailQuery e defina as propriedades desejadas.
- Chame o método IEWSClient->ListMessages e passe o MailQuery nos parâmetros para obter apenas as mensagens filtradas.
O seguinte trecho de código mostra como obter mensagens que têm a string “Newsletter” no assunto e foram enviadas hoje.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
try | |
{ | |
// Connect to EWS | |
const System::String mailboxUri = u"https://outlook.office365.com/ews/exchange.asmx"; | |
const System::String username = u"username"; | |
const System::String password = u"password"; | |
const System::String domain = u"domain"; | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Query building by means of ExchangeQueryBuilder class | |
System::SharedPtr<ExchangeQueryBuilder> builder = System::MakeObject<ExchangeQueryBuilder>(); | |
// Set Subject and Emails that arrived today | |
builder->get_Subject()->Contains(u"Newsletter"); | |
builder->get_InternalDate()->On(System::DateTime::get_Now()); | |
System::SharedPtr<MailQuery> query = builder->GetQuery(); | |
// Get list of messages | |
System::SharedPtr<ExchangeMessageInfoCollection> messages = client->ListMessages(client->get_MailboxInfo()->get_InboxUri(), query, false); | |
System::Console::WriteLine(System::String(u"EWS: ") + messages->get_Count() + u" message(s) found."); | |
// Disconnect from EWS | |
client->Dispose(); | |
} | |
catch (System::Exception& ex) | |
{ | |
System::Console::WriteLine(ex.get_Message()); | |
} |
Filtrar Mensagens com Base em Critérios
Os exemplos de código acima filtram mensagens com base no assunto do email e data. Também podemos filtrar por outras propriedades. Abaixo estão alguns exemplos de como definir as condições usando MailQuery.
Critério de Filtragem Data de Hoje
O seguinte trecho de código mostra como filtrar emails com base na data de hoje.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Emails that arrived today | |
System::SharedPtr<MailQueryBuilder> builder = System::MakeObject<MailQueryBuilder>(); | |
builder->get_InternalDate()->On(System::DateTime::get_Now()); |
Critério de Filtragem Intervalo de Datas
O seguinte trecho de código mostra como filtrar emails com base em um intervalo de datas.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Emails that arrived in last 7 days | |
builder->get_InternalDate()->Before(System::DateTime::get_Now()); | |
builder->get_InternalDate()->Since(System::DateTime::get_Now().AddDays(-7)); |
Critério de Filtragem Remetente Específico
O seguinte trecho de código mostra como filtrar emails com base em um remetente específico.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Get emails from specific sender | |
builder->get_From()->Contains(u"saqib.razzaq@127.0.0.1"); |
Critério de Filtragem Domínio Específico
O seguinte trecho de código mostra como filtrar emails com base em um domínio específico.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Get emails from specific domain | |
builder->get_From()->Contains(u"SpecificHost.com"); |
Critério de Filtragem Destinatário Específico
O seguinte trecho de código mostra como filtrar emails com base em um destinatário específico.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Get emails sent to specific recipient | |
builder->get_To()->Contains(u"recipient"); |
Critério de Filtragem por MessageID
O seguinte trecho de código mostra como filtrar emails com base em MessageID.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Get email with specific MessageId | |
System::SharedPtr<ExchangeQueryBuilder> builder1 = System::MakeObject<ExchangeQueryBuilder>(); | |
builder1->get_MessageId()->Equals(u"MessageID"); |
Critério de Filtragem Todas as Notificações de Entrega de Email
O seguinte trecho de código mostra como filtrar emails com base em todas as notificações de entrega de email.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Get Mail Delivery Notifications | |
builder1 = System::MakeObject<ExchangeQueryBuilder>(); | |
builder1->get_ContentClass()->Equals(System::ObjectExt::ToString(ContentClassType::get_MDN())); |
Filtrar por Tamanho da Mensagem
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
builder1 = System::MakeObject<ExchangeQueryBuilder>(); | |
builder1->get_ItemSize()->Greater(80000); |
Construindo Consultas Complexas
Se diferentes propriedades do MailQueryBuilder forem definidas em uma instrução separada, todas as condições são correspondidas. Por exemplo, para obter uma mensagem em um intervalo de datas particular e de um host específico, escreva três instruções:
Combinando Consultas com E
O seguinte trecho de código mostra como combinar consultas com E.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago | |
builder->get_From()->Contains(u"SpecificHost.com"); | |
builder->get_InternalDate()->Before(System::DateTime::get_Now()); | |
builder->get_InternalDate()->Since(System::DateTime::get_Now().AddDays(-7)); |
Combinando Consultas com OU
O MailQueryBuilder fornece o método Or() que aceita duas instâncias de MailQuery como parâmetros. Ele obtém mensagens que correspondem a qualquer uma das duas condições especificadas. O exemplo abaixo filtra mensagens que têm a palavra “test” no assunto ou “noreply@host.com” como remetente. O seguinte trecho de código mostra como combinar consultas com OU.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
builder->Or(builder->get_Subject()->Contains(u"test"), builder->get_From()->Contains(u"noreply@host.com")); |
Filtragem de Emails Sensível a Maiúsculas e Minúsculas
Os emails podem ser filtrados com base na sensibilidade a maiúsculas e minúsculas especificando a flag IgnoreCase nos critérios de filtragem, como mostrado no seguinte trecho de código.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-C | |
System::SharedPtr<IEWSClient> client = GetExchangeEWSClient(GetExchangeTestUser()); | |
// Query building by means of ExchangeQueryBuilder class | |
System::SharedPtr<ExchangeQueryBuilder> builder = System::MakeObject<ExchangeQueryBuilder>(); | |
builder->get_Subject()->Contains(u"Newsletter", true); | |
builder->get_InternalDate()->On(System::DateTime::get_Now()); | |
System::SharedPtr<MailQuery> query = builder->GetQuery(); | |
// Get list of messages | |
System::SharedPtr<ExchangeMessageInfoCollection> messages = client->ListMessages(client->get_MailboxInfo()->get_InboxUri(), query, false); | |
System::Console::WriteLine(System::String(u"EWS: ") + messages->get_Count() + u" message(s) found."); | |
// Disconnect from EWS | |
client->Dispose(); |
Filtrando Mensagens com Suporte de 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()); | |
int32_t itemsPerPage = 5; | |
System::String sGuid = System::ObjectExt::ToString(System::Guid::NewGuid()); | |
System::String str1 = sGuid + u" - " + u"Query 1"; | |
System::String str2 = sGuid + u" - " + u"Query 2"; | |
System::SharedPtr<MailQueryBuilder> queryBuilder1 = System::MakeObject<MailQueryBuilder>(); | |
queryBuilder1->get_Subject()->Contains(str1); | |
System::SharedPtr<MailQuery> query1 = queryBuilder1->GetQuery(); | |
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(), query1, itemsPerPage); | |
pages->Add(pageInfo); | |
int32_t str1Count = pageInfo->get_Items()->get_Count(); | |
while (!pageInfo->get_LastPage()) | |
{ | |
pageInfo = client->ListMessagesByPage(client->get_MailboxInfo()->get_InboxUri(), query1, itemsPerPage, pageInfo->get_PageOffset() + 1); | |
pages->Add(pageInfo); | |
str1Count += pageInfo->get_Items()->get_Count(); | |
} |