Filtrowanie e‑maili IMAP – metody, kryteria i przykłady kodu

Podstawowe filtrowanie wiadomości

Ten ImapClient klasa udostępnia ListMessages() metoda, która pobiera wszystkie wiadomości ze skrzynki. Aby otrzymać tylko wiadomości spełniające określony warunek, użyj przeciążonej ListMessages() metoda, która przyjmuje MailQuery jako argument.  MailQuery klasa udostępnia różne właściwości służące do określania warunków, np. daty, tematu, nadawcy, odbiorcy itp. Pierwszy przykład ilustruje filtrowanie wiadomości według daty i tematu. Pokazujemy także, jak filtrować według innych kryteriów oraz jak budować bardziej złożone zapytania. API umożliwia również stosowanie kryteriów wyszukiwania uwzględniających wielkość liter, aby dopasować dokładne kryteria filtrowania. API pozwala także określić kodowanie łańcucha wyszukiwania przy filtrowaniu wiadomości z mailboxa.

Filtrowanie wiadomości z skrzynki pocztowej

  1. Połącz się i zaloguj na serwer IMAP
  2. Utwórz instancję MailQuery i ustawić właściwości
  3. Wywołaj ImapClient.ListMessages(MailQuery query) metodę i przekazać MailQuery z parametrami, aby otrzymać jedynie przefiltrowane wiadomości.

Poniższy fragment kodu pokazuje, jak połączyć się z skrzynką IMAP i pobrać wiadomości, które dotarły dzisiaj oraz mają w temacie słowo „newsletter”.

Filtrowanie wiadomości według określonych kryteriów

Powyższe przykłady kodu filtruje wiadomości na podstawie tematu e‑mail i daty. Możemy także używać innych właściwości do ustawiania dodatkowych obsługiwanych warunków. Poniżej kilka przykładów ustawiania warunków przy użyciu MailQuery. Poniższe fragmenty kodu pokazują, jak filtrować e-maile według:

  1. Dzisiejsza data.
  2. Zakres dat.
  3. Od konkretnego nadawcy.
  4. Z konkretnej domeny.
  5. Od konkretnego odbiorcy.

Dzisiejsza data

Poniższy fragment kodu pokazuje, jak filtrować e-maile według dzisiejszej daty.

Zakres dat

Poniższy fragment kodu pokazuje, jak filtrować e‑maile według zakresu dat.

Określony nadawca

Poniższy fragment kodu pokazuje, jak filtrować e-maile według konkretnego nadawcy.

Określona domena

Poniższy fragment kodu pokazuje, jak filtrować e-maile według konkretnej domeny.

Określony odbiorca

Poniższy fragment kodu pokazuje, jak filtrować e-maile według konkretnego odbiorcy.

Zaawansowane budowanie zapytań

Jeśli różne MailQueryBuilder właściwości są ustawiane w oddzielnych instrukcjach, wtedy wszystkie warunki będą spełnione. Na przykład, jeśli chcemy pobrać wiadomości z określonego zakresu dat i od konkretnego hosta, musimy napisać trzy instrukcje.

Łącz zapytania przy użyciu AND

Poniższy fragment kodu pokazuje, jak łączyć zapytania przy użyciu AND.

Łącz zapytania przy użyciu OR

MailQueryBuilder udostępnia Or() metoda przyjmująca dwa MailQuery instancje jako parametry. Pobiera wiadomości spełniające dowolny z dwóch podanych warunków. Poniższy fragment kodu pokazuje, jak filtrować wiadomości, które mają w temacie „test” lub nadawcą „noreply@host.com”. Poniższy fragment kodu pokazuje, jak łączyć zapytania operatorem OR.

Filtrowanie na podstawie InternalDate

Wiadomości mogą być pobierane z serwera na podstawie InternalDate, jednak czasami serwer nie zwraca wszystkich wiadomości widocznych w skrzynce odbiorczej. Powodem może być strefa czasowa serwera, ponieważ nie wszystkie serwery używają UTC, np. Gmail. Aspose wysyła polecenia takie jak 008 SEARCH ON 4-May-2014 zgodnie z protokole IMAP jednak wynik może się różnić ze względu na ustawienia strefy czasowej serwera. Dodano nowy element w ImapMessageInfo as InternalDate co dodatkowo pomaga w filtrowaniu wiadomości. Poniższy fragment kodu pokazuje użycie InternalDate do filtrowania wiadomości.

Filtrowanie rozróżniające wielkość liter

Poniższy fragment kodu pokazuje, jak zastosować filtrowanie wiadomości uwzględniające wielkość liter.

Określenie kodowania dla buildera zapytań

API ImapQueryBuilder konstruktor może być użyty do określenia kodowania dla łańcucha wyszukiwania. Można to również ustawić przy użyciu DefaultEncoding właściwość klasy MailQueryBuilder. Poniższy fragment kodu pokazuje, jak określić kodowanie dla buildera zapytań.

Niestandardowe opcje filtrowania

Filtrowanie wiadomości z własną flagą

Niestandardowe wyszukiwanie do filtrowania

Na przykład standard RFC 3501 nie zezwala na wyszukiwanie wiadomości na podstawie istnienia załączników w wiadomościach. Jednak Gmail zapewnia Rozszerzenia IMAP które umożliwiają wykonanie takiego wyszukiwania. Następny fragment kodu pokazuje, jak stworzyć odpowiednie zapytanie.

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

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

Filtrowanie wiadomości z obsługą stronicowania

Ten ImapClient umożliwia wyszukiwanie wiadomości z mailboxa i wyświetlanie ich z obsługą stronicowania. Poniższy fragment kodu pokazuje, jak filtrować wiadomości z obsługą stronicowania.