IMAP‑e‑mailfiltering – methoden, criteria & code‑voorbeelden
Basisberichtfiltering
De ImapClient class biedt de ListMessages() methode die alle berichten uit een mailbox haalt. Om alleen berichten te krijgen die aan een bepaalde voorwaarde voldoen, gebruik de overladen ListMessages() methode die neemt MailQuery als argument. De MailQuery klasse biedt diverse eigenschappen om de voorwaarden op te geven, bijvoorbeeld datum, onderwerp, afzender, ontvanger enzovoort. Het eerste voorbeeld toont hoe berichten te filteren op datum en onderwerp. We laten ook zien hoe te filteren op andere criteria en hoe complexere queries op te bouwen. De API biedt bovendien de mogelijkheid om hoofdlettergevoelige zoekcriteria toe te passen voor exacte filtering. De API staat ook toe de codering van de zoekstring op te geven voor het filteren van berichten uit de mailbox.
Berichten filteren uit mailbox
- Verbinden en inloggen op een IMAP‑server
- Maak een instantie van de MailQuery en stel de eigenschappen in
- Roep de ImapClient.ListMessages(MailQuery query) methode en geef de MailQuery met de parameters om alleen gefilterde berichten te verkrijgen.
Het onderstaande codefragment toont hoe u verbinding maakt met een IMAP‑mailbox en berichten opvraagt die vandaag zijn aangekomen en het woord "newsletter" in het onderwerp hebben.
Berichten filteren op specifieke criteria
De bovenstaande codevoorbeelden filtert berichten op basis van het e-mailonderwerp en de datum. We kunnen ook andere eigenschappen gebruiken om andere ondersteunde voorwaarden in te stellen. Hieronder staan enkele voorbeelden van het instellen van de voorwaarden met behulp van MailQuery. De volgende codefragmenten tonen hoe u e‑mails kunt filteren op:
- De datum van vandaag.
- Een datumreeks.
- Van een specifieke afzender.
- Van een specifiek domein.
- Van een specifieke ontvanger.
Datum van vandaag
Het onderstaande codefragment toont hoe u e‑mails kunt filteren op de datum van vandaag.
Datumbereik
Het onderstaande code‑fragment toont hoe je e‑mails kunt filteren op datumbereik.
Specifieke afzender
Het onderstaande codefragment toont hoe u e‑mails kunt filteren op een specifieke afzender.
Specifiek domein
Het onderstaande codefragment toont hoe u e‑mails kunt filteren op een specifiek domein.
Specifieke ontvanger
Het onderstaande codefragment toont hoe u e‑mails kunt filteren op een specifieke ontvanger.
Geavanceerde query‑opbouw
Als verschillend MailQueryBuilder eigenschappen worden ingesteld in afzonderlijke statements, waarna alle voorwaarden voldaan zijn. Bijvoorbeeld, als we berichten willen ophalen tussen een datumbereik en van een specifieke host, moeten we drie statements schrijven.
Queries combineren met AND
Het volgende codefragment toont hoe je queries combineert met AND.
Queries combineren met OR
MailQueryBuilder biedt de Or() methode die twee MailQuery instanties als parameters. Het haalt de berichten op die voldoen aan een van de twee gespecificeerde voorwaarden. Het onderstaande codefragment toont hoe u berichten kunt filteren die ofwel “test” in het onderwerp hebben of “noreply@host.com” als afzender. Het volgende codefragment laat zien hoe u queries kunt combineren met OR.
Filteren op interne datum
Berichten kunnen van de server worden gehaald op basis van de InternalDate, maar soms retourneert de server niet alle berichten zoals zichtbaar in de inbox. De oorzaak kan de tijdzone van de server zijn, omdat deze mogelijk niet UTC is voor alle servers zoals Gmail. Aspose verzendt commando’s zoals 008 SEARCH ON 4-May-2014 conform de IMAP‑protocol resultaten kunnen echter verschillen door de tijdzone‑instellingen van de server. Een nieuw lid is toegevoegd in ImapMessageInfo als InternalDate wat verder helpt bij het filteren van de berichten. Het onderstaande codefragment toont het gebruik van InternalDate om berichten te filteren.
Hoofdlettergevoelige filtering
Het onderstaande codefragment toont hoe u hoofdlettergevoelige e‑mailfiltering kunt gebruiken.
Codering Opgeven voor Query Builder
De API’s ImapQueryBuilder constructor kan worden gebruikt om de codering voor de zoekstring op te geven. Dit kan ook worden ingesteld via de DefaultEncoding eigenschap van de MailQueryBuilder. Het onderstaande codefragment toont hoe u de codering voor de query‑builder kunt specificeren.
Aangepaste filteropties
Berichten Filteren met Aangepaste Vlag
Aangepaste zoekopdracht voor filteren
Bijvoorbeeld, de RFC 3501-standaard staat geen zoekopdracht toe op basis van het bestaan van bijlagen in berichten. Maar Gmail biedt IMAP‑extensies die zo’n zoekopdracht mogelijk maken. Het volgende code‑fragment laat zien hoe je een overeenkomstige query maakt.
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
Berichten Filteren met Paginering
De ImapClient biedt de mogelijkheid om berichten in de mailbox te zoeken en ze met paginering weer te geven. Het onderstaande codefragment toont hoe u berichten kunt filteren met paginering.