Filtraggio Email IMAP - Metodi, Criteri e Esempi di Codice

Filtraggio Base dei Messaggi

Il ImapClient classe fornisce il ListMessages() metodo che ottiene tutti i messaggi da una casella di posta. Per ottenere solo i messaggi che corrispondono a una condizione, usa il sovraccaricato ListMessages() metodo che prende MailQuery come argomento. Il MailQuery la classe fornisce varie proprietà per specificare le condizioni, ad esempio data, oggetto, mittente, destinatario e così via. Il primo esempio illustra come filtrare i messaggi in base a data e oggetto. Mostriamo anche come filtrare su altri criteri e come costruire query più complesse. L’API fornisce inoltre la capacità di applicare criteri di ricerca sensibili al maiuscolo/minuscolo per corrispondere esattamente ai criteri di filtraggio. L’API consente anche di specificare la codifica della stringa di ricerca per filtrare i messaggi dalla casella di posta.

Filtrare i messaggi dalla casella di posta

  1. Connetti e accedi a un server IMAP
  2. Crea un’istanza di MailQuery e impostare le proprietà
  3. Chiama il ImapClient.ListMessages(MailQuery query) metodo e passa il MailQuery con i parametri per ottenere solo i messaggi filtrati.

Il seguente frammento di codice mostra come connettersi a una casella IMAP e ottenere i messaggi arrivati oggi e che hanno la parola "newsletter" nell’oggetto.

Filtra Messaggi per Criteri Specifici

I campioni di codice sopra filtra i messaggi in base all’oggetto dell’email e alla data. Possiamo usare altre proprietà per impostare altre condizioni supportate. Di seguito alcuni esempi di impostazione delle condizioni usando MailQuery. I frammenti di codice seguenti mostrano come filtrare le email su:

  1. La data di oggi.
  2. Un intervallo di date.
  3. Da un mittente specifico.
  4. Da un dominio specifico.
  5. Da un destinatario specifico.

Data di oggi

Il seguente frammento di codice mostra come filtrare le email sulla data di oggi.

Intervallo di date

Il seguente frammento di codice mostra come filtrare le email per intervallo di date.

Mittente specifico

Il seguente frammento di codice mostra come filtrare le email su un mittente specifico.

Dominio specifico

Il seguente frammento di codice mostra come filtrare le email su un dominio specifico.

Destinatario specifico

Il seguente frammento di codice mostra come filtrare le email su un destinatario specifico.

Costruzione Avanzata di Query

Se diversi MailQueryBuilder le proprietà sono impostate in istruzioni separate, quindi tutte le condizioni verrebbero soddisfatte. Ad esempio, se desideriamo ottenere messaggi tra un intervallo di date e da un host specifico, dobbiamo scrivere tre istruzioni.

Combina le query con AND

Il seguente frammento di codice mostra come combinare query con AND.

Combina le query con OR

MailQueryBuilder fornisce il Or() metodo che prende due MailQuery istanze come parametri. Ottiene i messaggi che corrispondono a una delle due condizioni specificate. Il seguente frammento di codice mostra come filtrare i messaggi che hanno “test” nell’oggetto o “noreply@host.com” come mittente. Il seguente frammento di codice mostra come combinare query con OR.

Filtraggio Basato su InternalDate

I messaggi possono essere estratti dal server basandosi su InternalDate, tuttavia a volte il server non restituisce tutti i messaggi visibili nella casella di posta. Il motivo può essere il fuso orario del server perché potrebbe non essere UTC per tutti i server come Gmail. Aspose invia comandi come 008 SEARCH ON 4-May-2014 secondo il protocollo IMAP tuttavia il risultato può differire a causa delle impostazioni del fuso orario del server. È stato aggiunto un nuovo membro in ImapMessageInfo come InternalDate che aiuta ulteriormente a filtrare i messaggi. Il seguente frammento di codice mostra l’uso di InternalDate per filtrare i messaggi.

Filtraggio Sensibile al Maiuscolo/Minuscolo

Il seguente frammento di codice mostra come utilizzare il filtro di email sensibile al maiuscolo/minuscolo.

Specifica la Codifica per il Costruttore di Query

Le API ImapQueryBuilder il costruttore può essere usato per specificare la codifica per la stringa di ricerca. Questo può anche essere impostato usando il DefaultEncoding proprietà del MailQueryBuilder. Il seguente frammento di codice mostra come specificare la codifica per il costruttore di query.

Opzioni di Filtraggio Personalizzate

Filtra i Messaggi con Flag Personalizzato

Ricerca Personalizzata per Filtrare

Ad esempio, lo standard RFC 3501 non consente la ricerca di messaggi basata sulla presenza di allegati nei messaggi. Ma Gmail offre Estensioni IMAP che consentono di eseguire tale ricerca. Il prossimo frammento di codice mostra come creare una query corrispondente.

ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");

MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);

Filtra i Messaggi con Supporto alla Paginazione

Il ImapClient fornisce la capacità di cercare messaggi dalla casella di posta e elencarli con supporto alla paginazione. Il seguente frammento di codice mostra come filtrare i messaggi con supporto alla paginazione.