Filtrace IMAP e‑mailů – metody, kritéria a ukázky kódu

Základní filtrování zpráv

The ImapClient třída poskytuje ListMessages() metoda, která získá všechny zprávy z poštovní schránky. Pro získání jen zpráv, které splňují určitou podmínku, použijte přetíženou ListMessages() metoda, která přijímá MailQuery jako argument.  MailQuery třída poskytuje různé vlastnosti pro zadání podmínek, např. datum, předmět, odesílatel, příjemce a tak dále. První příklad ukazuje, jak filtrovat zprávy podle data a předmětu. Dále ukazujeme, jak filtrovat podle dalších kritérií a jak vytvořit složitější dotazy. API také poskytuje možnost použít citlivé vyhledávání rozlišující velikost písmen pro přesné filtrování. API také umožňuje nastavit kódování vyhledávacího řetězce pro filtrování zpráv ze schránky.

Filtrování zpráv z poštovní schránky

  1. Připojit se a přihlásit k IMAP serveru
  2. Vytvořte instanci MailQuery a nastavit vlastnosti
  3. Zavolejte ImapClient.ListMessages(MailQuery query) metoda a předat MailQuery s parametry pro získání pouze filtrovaných zpráv.

Následující úryvek kódu ukazuje, jak se připojit k IMAP schránce a získat zprávy, které dorazily dnes a mají ve předmětu slovo „newsletter“.

Filtrovat zprávy podle konkrétních kritérií

Výše uvedené ukázky kódu filtruje zprávy na základě předmětu e‑mailu a data. Můžeme také použít další vlastnosti k nastavení dalších podporovaných podmínek. Níže jsou některé příklady nastavení podmínek pomocí MailQuery. Následující úryvky kódu ukazují, jak filtrovat e‑maily podle:

  1. Dnešní datum.
  2. Rozsah dat.
  3. Od konkrétního odesílatele.
  4. Z konkrétní domény.
  5. Od konkrétního příjemce.

Dnešní datum

Následující úryvek kódu ukazuje, jak filtrovat e‑maily podle dnešního data.

Rozmezí dat

Následující úryvek kódu ukazuje, jak filtrovat e‑maily podle časového období.

Konkrétní odesílatel

Následující úryvek kódu ukazuje, jak filtrovat e‑maily podle konkrétního odesílatele.

Konkrétní doména

Následující úryvek kódu ukazuje, jak filtrovat e‑maily podle konkrétní domény.

Konkrétní příjemce

Následující úryvek kódu ukazuje, jak filtrovat e‑maily podle konkrétního příjemce.

Pokročilé vytváření dotazů

Pokud různé MailQueryBuilder vlastnosti jsou nastaveny v samostatných příkazech, pak budou splněny všechny podmínky. Například pokud chceme získat zprávy v rozmezí dat a od konkrétního hostitele, musíme napsat tři příkazy.

Kombinovat dotazy pomocí AND

Následující úryvek kódu ukazuje, jak kombinovat dotazy pomocí AND.

Kombinovat dotazy pomocí OR

MailQueryBuilder poskytuje Or() metoda, která přijímá dva MailQuery instance jako parametry. Získá zprávy, které splňují libovolnou ze dvou uvedených podmínek. Následující úryvek kódu ukazuje, jak filtrovat zprávy, které mají v předmětu „test“ nebo odesílatele „noreply@host.com“. Další úryvek ukazuje, jak kombinovat dotazy pomocí OR.

Filtrace podle InternalDate

Zprávy lze získat ze serveru na základě InternalDate, avšak někdy server nevrátí všechny zprávy viditelné v doručené poště. Příčinou může být časová zóna serveru, protože nemusí být UTC pro všechny servery jako Gmail. Aspose odesílá příkazy jako 008 SEARCH ON 4-May-2014 podle protokolu IMAP výsledek se však může lišit kvůli nastavení časové zóny serveru. Nový prvek byl přidán do ImapMessageInfo jako InternalDate co dále pomáhá při filtrování zpráv. Následující úryvek kódu ukazuje použití InternalDate k filtrování zpráv.

Rozlišující filtrování (Case‑Sensitive)

Následující úryvek kódu ukazuje, jak použít citlivé filtrování e‑mailů na velikost písmen.

Určení kódování pro stavitel dotazů

API ImapQueryBuilder konstruktor může být použit k určení kódování pro vyhledávací řetězec. Toto lze také nastavit pomocí DefaultEncoding vlastnost třídy MailQueryBuilder. Následující úryvek kódu ukazuje, jak nastavit kódování pro stavitel dotazů.

Vlastní možnosti filtrování

Filtrování zpráv s vlastním příznakem

Vlastní vyhledávání pro filtrování

Například standard RFC 3501 neumožňuje vyhledávání zpráv podle existence příloh. Ale Gmail poskytuje Rozšíření IMAP které umožňují provést takové vyhledávání. Následující úryvek kódu ukazuje, jak vytvořit odpovídající dotaz.

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

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

Filtrování zpráv s podporou stránkování

The ImapClient poskytuje možnost vyhledávat zprávy ze schránky a vypisovat je s podporou stránkování. Následující úryvek kódu ukazuje, jak filtrovat zprávy s podporou stránkování.