Praca z wiadomościami z serwera
Uzyskiwanie informacji o skrzynce pocztowej
Możemy uzyskać informacje o skrzynce pocztowej, takie jak liczba wiadomości i rozmiar skrzynki, przy użyciu metod GetMailBoxSize() i GetMailBoxInfo().
- Metoda GetMailBoxSize() zwraca rozmiar skrzynki pocztowej w bajtach.
- Metoda GetMailBoxInfo() zwraca obiekt typu Pop3MailBoxInfo.
Można również uzyskać liczbę wiadomości przy użyciu właściwości MessageCount oraz rozmiar przy użyciu właściwości OccupiedSize. Poniższy przykładowy kod pokazuje, jak uzyskać informacje o skrzynce pocztowej. Pokazuje jak:
- Utwórz Pop3Client.
- Połącz się z serwerem POP3.
- Pobierz rozmiar skrzynki pocztowej.
- Pobierz informacje o skrzynce pocztowej.
- Pobierz liczbę wiadomości w skrzynce pocztowej.
- Pobierz zajęty rozmiar.
Uzyskiwanie liczby e‑maili w skrzynce
Poniższy fragment kodu pokazuje, jak policzyć wiadomości e‑mail w skrzynce pocztowej.
Aspose.Email umożliwia programistom pracę z e‑mailami na wiele różnych sposobów. Na przykład mogą pobrać informacje z nagłówka przed podjęciem decyzji o pobraniu wiadomości. Mogą także pobrać e‑maile z serwera i zapisać je bez parsowania (szybciej) lub po parsowaniu (wolniej). Ten artykuł pokazuje, jak pobierać i konwertować e‑maile.
Pobieranie informacji z nagłówków e‑mail
Nagłówki e‑maili mogą dostarczyć informacji o wiadomości, które możemy wykorzystać do decyzji, czy pobrać całą wiadomość. Zazwyczaj informacje w nagłówkach zawierają nadawcę, temat, datę otrzymania itp. (Nagłówki e‑maili są szczegółowo opisane w sekcji Dostosowywanie nagłówków e‑maili. Ten temat dotyczy wyłącznie wysyłania e‑maili za pomocą SMTP, ale informacje o zawartości nagłówków pozostają ważne dla e‑maili POP3). Poniższe przykłady pokazują, jak pobrać nagłówki e‑maili z serwera POP3 za pomocą numeru kolejnościowego wiadomości.
Pobieranie wiadomości e‑mail
Komponent klasy Aspose.Email.Pop3 zapewnia możliwość pobierania wiadomości e‑mail z serwera POP3 i parsowania ich do instancji MailMessage przy pomocy komponentów MailMessage. Klasa MailMessage zawiera liczne właściwości i metody do manipulacji treścią e‑maili. Korzystając z funkcji FetchMessage klasy Pop3Client, możesz uzyskać instancję MailMessage bezpośrednio z serwera POP3. Poniższy fragment kodu pokazuje, jak pobrać kompletną wiadomość e‑mail z serwera POP3.
Pobieranie podsumowania informacji o wiadomości przy użyciu unikalnego ID
Klient POP3 API może pobrać podsumowujące informacje o wiadomości z serwera przy użyciu jej unikalnego identyfikatora. Zapewnia to szybki dostęp do krótkich informacji o wiadomości bez konieczności najpierw pobierania całej wiadomości z serwera. Poniższy fragment kodu pokazuje, jak pobrać podsumowanie informacji o wiadomości.
Listowanie wiadomości z wieloma połączeniami
Dla operacji o dużym obciążeniu Aspose.Email oferuje właściwość ‘use_multi_connection’ klasy Pop3Client klasę umożliwiającą użycie wielu połączeń podczas pobierania e‑maili. Jednak użycie tego trybu nie musi koniecznie prowadzić do zwiększenia wydajności. Poniższy fragment kodu pokazuje, jak nawiązać połączenie z serwerem POP3, skonfigurować klienta tak, aby zezwalał na maksymalnie 5 równoczesnych połączeń i włączyć tryb wielopołączeniowy w celu pobrania informacji o wiadomościach obecnych na serwerze:
import aspose.email as ae
client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()
Pobieranie wiadomości z serwera i zapisywanie na dysk
Zapis wiadomości na dysku bez parsowania
Jeśli chcesz pobrać wiadomości e‑mail z serwera POP3 bez ich parsowania, użyj funkcji SaveMessage klasy Pop3Client. Funkcja SaveMessage nie parsuje wiadomości e‑mail, więc jest szybsza niż funkcja FetchMessage. Poniższy fragment kodu pokazuje, jak zapisać wiadomość według jej numeru kolejnościowego, w tym przypadku numer 1. Metoda SaveMessage zapisuje wiadomość w oryginalnym formacie EML bez parsowania.
Parsowanie wiadomości przed zapisem
Użyj metody ‘fetch_message’ obiektu klienta utworzonego przy użyciu Pop3Client klasę umożliwiającą pobranie wiadomości o określonym numerze kolejnościowym. Poniższy przykładowy kod demonstruje, jak pobrać konkretną wiadomość i zapisać ją, używając jej tematu jako nazwy pliku, wywołując metodę ‘save’ 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 wiadomości według nadawcy, odbiorcy lub daty
Klasa Pop3Client, opisana w sekcji Łączenie z serwerem POP3, udostępnia metodę list_messages(), która pobiera wszystkie wiadomości ze skrzynki. Aby otrzymać tylko wiadomości spełniające określony warunek, użyj przeciążonej metody ListMessages(), która przyjmuje jako argument obiekt MailQuery. Klasa MailQuery zapewnia różne właściwości do określania warunków zapytania, np. daty, tematu, nadawcy, odbiorcy itp. Klasa MailQueryBuilder służy do budowania wyrażenia wyszukiwania. Najpierw ustawia się wszystkie warunki i ograniczenia, a następnie MailQuery jest wypełniany zapytaniem opracowanym przez MailQueryBuilder. Obiekt klasy MailQuery jest używany przez Pop3Client do wyodrębnienia przefiltrowanych informacji z serwera. Ten artykuł pokazuje, jak filtrować wiadomości e‑mail ze skrzynki. Pierwszy przykład ilustruje filtrowanie wiadomości na podstawie daty i tematu. Pokazujemy także, jak filtrować według innych kryteriów i jak budować bardziej złożone zapytania. Prezentujemy również zastosowanie filtru daty i czasu do pobrania konkretnych e‑maili ze skrzynki. Dodatkowo pokazujemy, jak zastosować filtrowanie rozróżniające wielkość liter.
Filtrowanie wiadomości ze skrzynki
Aby filtrować wiadomości ze skrzynki:
- Połącz się i zaloguj do serwera POP3.
- Utwórz instancję MailQuery i ustaw żądane właściwości.
- Wywołaj metodę Pop3Client.list_messages(MailQuery query) i przekaż w parametrze obiekt MailQuery, aby otrzymać wyłącznie przefiltrowane wiadomości.
Poniższy fragment kodu pokazuje, jak połączyć się z skrzynką POP3 i pobrać wiadomości, które dotarły dzisiaj oraz mają słowo "newsletter" w temacie.
Pobieranie wiadomości spełniających określone kryteria
Aspose.Email umożliwia również budowanie złożonych kryteriów wyszukiwania do zapytań i filtrowania wiadomości e‑mail. W tym celu użyj MailQueryBuilder klasę i jej właściwości. Kryteria pobierania są następujące:
- Pobierz wiadomości według daty dostarczenia.
- Pobierz wiadomości w określonym przedziale.
- Pobierz wiadomości od określonego nadawcy.
- Pobierz wiadomości z określonej domeny.
- Pobierz wiadomości do określonego odbiorcy.
Data dzisiejsza
Aby pobrać wiadomości według daty dostarczenia, użyj właściwości ‘internal_date’ 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())
Zakres dat
Aby pobrać wiadomości w określonym przedziale dat, użyj tej samej właściwości ‘internal_date’, określając 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))
Określony nadawca
Aby pobrać wiadomości od określonego nadawcy, użyj właściwości ‘from_address’ 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")
Określona domena
Aby pobrać wiadomości z określonej domeny, użyj właściwości ‘from_address’ jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
Konkretny odbiorca
Aby pobrać wiadomości do określonego odbiorcy, użyj właściwości ’to’ jak pokazano w poniższym przykładzie kodu:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
Budowanie złożonych zapytań
Czasami konieczne jest spełnienie więcej niż jednego zapytania. Aspose.Email umożliwia to, łącząc zapytania w kilku wyrażeniach. Utwórz MailQueryBuilder obiekt i używać jego właściwości do budowania konkretnych zapytań.
Łączenie zapytań przy użyciu AND
Poniższy fragment kodu pokazuje, jak łączyć zapytania przy użyciu 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")
Łączenie zapytań przy użyciu OR
Poniższy fragment kodu pokazuje, jak łączyć zapytania za pomocą OR.
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
Stosowanie filtrów wrażliwych na 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 klasa zapewnia 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)