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:

  1. Utwórz Pop3Client.
  2. Połącz się z serwerem POP3.
  3. Pobierz rozmiar skrzynki pocztowej.
  4. Pobierz informacje o skrzynce pocztowej.
  5. Pobierz liczbę wiadomości w skrzynce pocztowej.
  6. 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:

  1. Połącz się i zaloguj do serwera POP3.
  2. Utwórz instancję MailQuery i ustaw żądane właściwości.
  3. 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)