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
- Připojit se a přihlásit k IMAP serveru
- Vytvořte instanci MailQuery a nastavit vlastnosti
- 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:
- Dnešní datum.
- Rozsah dat.
- Od konkrétního odesílatele.
- Z konkrétní domény.
- 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í.