Pobieranie wiadomości e-mail z serwera POP3
Zapisz e‑maile na dysk bez parsowania
Aby pobrać wiadomości e‑mail z serwera POP3 bez parsowania, możesz użyć save_message metodę Aspose.Email Pop3Client klasę. Poniższy fragment kodu ilustruje, jak zapisać wiadomość używając jej numeru kolejnościowego, w tym przypadku numeru 1. save_message metoda zachowuje oryginalny format EML bez parsowania:
Parsuj wiadomości przed zapisaniem
Możesz pobrać konkretną wiadomość e‑mail, używając fetch_message metoda Pop3Client klasę, określając żądany numer kolejnościowy dla obiektu klienta. Poniższy przykładowy kod pokazuje, jak pobrać konkretną wiadomość, a następnie zapisać ją, używając jej tematu jako nazwy pliku, wywołując save metodę na obiekcie msg:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)
Filtrowanie e‑maili z serwera według kryteriów
Aspose.Email Pop3Client klasa udostępnia list_messages() metoda, która pobiera wszystkie wiadomości ze skrzynki. Aby otrzymać tylko wiadomości spełniające określony warunek, użyj przeciążonej list_messages(query) metoda, która przyjmuje MailQuery jako argument. MailQuery klasa udostępnia różne właściwości do określania warunków zapytania, np. daty, tematu, nadawcy, odbiorcy itp.
Aby zbudować wyrażenie wyszukiwania, użyj MailQueryBuilder klasę. Najpierw zdefiniuj wszystkie niezbędne warunki i ograniczenia, a następnie wypełnij obiekt MailQuery zapytaniem utworzonym przez MailQueryBuilder. Pop3Client wykorzystuje ten obiekt MailQuery do pobierania przefiltrowanych informacji z serwera.
Poniższy przykładowy kod demonstruje, jak filtrować i pobierać e‑maile z konta Gmail na podstawie różnych kryteriów, w tym tematu, wewnętrznej daty, nadawcy i odbiorcy. Pokazuje także filtrowanie rozróżniające wielkość liter oraz efektywne budowanie złożonych zapytań.
- Nawiąż połączenie z serwerem Gmail POP3 przy użyciu Pop3Client klasę z określonym adresem serwera, portem, nazwą użytkownika i hasłem. Opcje bezpieczeństwa są ustawione na AUTO dla bezpiecznego połączenia.
- Utwórz instancję MailQueryBuilder aby skonstruować kryteria wyszukiwania do filtrowania e‑maili.
- Filtrowanie po Temacie:
- E‑maile zawierające w temacie słowo "Newsletter" są określone jako warunek filtru.
- Filtrowanie po Wewnętrznej dacie:
- Ustawiono filtr dla e‑maili otrzymanych w bieżącym dniu.
- Dodano dodatkowy filtr, aby pobrać e‑maile otrzymane w ciągu ostatniego tygodnia.
- Filtrowanie po Nadawcy:
- Filtry są stosowane, aby szukać e‑maili od konkretnego adresu (saqib.razzaq@127.0.0.1) oraz aby uwzględniać e‑maile z określonej domeny (SpecificHost.com).
- Filtrowanie po Odbiorcy:
- Zdefiniowano filtr, aby znaleźć e‑maile wysłane do konkretnego odbiorcy.
- Łącz zapytania używając operatora OR, aby wyszukać e‑maile, które pasują do podanego tematu lub są wysłane z określonego adresu.
- Filtrowanie rozróżniające wielkość liter:
- Zastosowano filtr rozróżniający wielkość liter dla tematu zawierającego "Newsletter" (oznaczony parametrem True).
- Wymienianie wiadomości:
- Metoda list_messages() jest wywoływana z skonstruowanym zapytaniem, aby pobrać przefiltrowane wiadomości ze skrzynki.
- Na końcu wypisz liczbę przefiltrowanych wiadomości.
Filtrowanie e‑maili według daty
Aby pobrać wiadomości według daty dostarczenia, użyj internal_date właściwość jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
Filtrowanie e‑maili według przedziału dat
Aby pobrać wiadomości w określonym przedziale dat, użyj tej samej internal_date właściwość określająca zakres dat, jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
Filtrowanie e‑maili według nadawcy
Aby pobrać wiadomości od określonego nadawcy, użyj from_address właściwość jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
Filtrowanie e‑maili według domeny
Aby pobrać wiadomości z określonej domeny, użyj from_address właściwość jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Filtrowanie e‑maili według odbiorcy
Aby pobrać wiadomości do określonego odbiorcy, użyj to właściwość jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Tworzenie złożonych zapytań wyszukiwania
Czasami konieczne jest spełnienie więcej niż jednego zapytania. Aspose.Email umożliwia łączenie zapytań w kilku instrukcjach. Utwórz MailQueryBuilder obiekt i używać jego właściwości do budowania konkretnych zapytań.
Łącz zapytania przy użyciu AND
Poniższy fragment kodu pokazuje, jak łączyć zapytania przy użyciu operatora AND:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")
Łącz zapytania przy użyciu OR
Poniższy fragment kodu pokazuje, jak łączyć zapytania przy użyciu operatora OR:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Zastosuj filtrowanie rozróżniające wielkość liter
API również zapewnia możliwość filtrowania e‑maili ze skrzynki na podstawie kryteriów rozróżniających wielkość liter. Następujące metody klasy StringComparisonField klasy zapewniają możliwość wyszukiwania e‑maili z określeniem flag rozróżniających wielkość liter:
Metoda Aspose.Email.StringComparisonField.contains(value, ignore_case) Metoda Aspose.Email.StringComparisonField.equals(value, ignore_case) Metoda Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Metoda Aspose.Email.StringComparisonField.not_equals(value, ignore_case)
Poniższy fragment kodu pokazuje, jak wdrożyć tę funkcjonalność w swoim projekcie:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)