Práce se zprávami ze serveru

Získání informací o poštovní schránce

Můžeme získat informace o poštovní schránce, jako je počet zpráv a velikost schránky, pomocí metod GetMailBoxSize() a GetMailBoxInfo().

  • Metoda GetMailBoxSize() vrací velikost poštovní schránky v bajtech.
  • Metoda GetMailBoxInfo() vrací objekt typu Pop3MailBoxInfo.

Je také možné získat počet zpráv pomocí vlastnosti MessageCount a velikost pomocí vlastnosti OccupiedSize. Následující ukázkový kód ukazuje, jak získat informace o poštovní schránce. Ukazuje, jak:

  1. Vytvořte Pop3Client.
  2. Připojit se k POP3 serveru.
  3. Získat velikost poštovní schránky.
  4. Získat informace o poštovní schránce.
  5. Získat počet zpráv v poštovní schránce.
  6. Získat obsazenou velikost.

Získání počtu e‑mailů v poštovní schránce

Následující úryvek kódu ukazuje, jak spočítat e‑mailové zprávy v poštovní schránce.

Aspose.Email umožňuje vývojářům pracovat s e‑maily různými způsoby. Například mohou získat informace z hlavičky před rozhodnutím, zda e‑mail stáhnout. Nebo mohou e‑maily ze serveru načíst a uložit je bez parsování (rychlejší) nebo po parsování (pomalejší). Tento článek ukazuje, jak e‑maily načíst a převést.

Získání informací o e‑mailových hlavičkách

Hlavičky e‑mailu nám mohou poskytnout informace o e‑mailové zprávě, které můžeme použít k rozhodnutí, zda stáhnout celou zprávu. Typicky hlavičky obsahují odesílatele, předmět, datum přijetí atd. (Hlavičky e‑mailu jsou podrobně popsány v kapitole Přizpůsobení hlaviček e‑mailu. Tato kapitola se zaměřuje na odesílání e‑mailů pomocí SMTP, ale informace o obsahu hlaviček zůstávají platné i pro POP3 e‑maily). Následující příklady ukazují, jak načíst hlavičky e‑mailu ze serveru POP3 pomocí pořadového čísla zprávy.

Načítání e‑mailových zpráv

Komponenta třídy Aspose.Email.Pop3 poskytuje možnost načíst e‑mailové zprávy ze serveru POP3 a parsovat je do instance MailMessage pomocí komponent MailMessage. Třída MailMessage obsahuje řadu vlastností a metod pro manipulaci s obsahem e‑mailu. Pomocí funkce FetchMessage třídy Pop3Client můžete získat instanci MailMessage přímo ze serveru POP3. Následující úryvek kódu ukazuje, jak načíst kompletní e‑mailovou zprávu ze serveru POP3.

Získání souhrnných informací o zprávě pomocí jedinečného ID

POP3 klient API může získat souhrnné informace o zprávě ze serveru pomocí jedinečného ID zprávy. To poskytuje rychlý přístup k stručným informacím o zprávě, aniž by bylo nejprve nutné stáhnout celou zprávu ze serveru. Následující úryvek kódu ukazuje, jak získat souhrnné informace o zprávě.

Výpis zpráv s více spojeními

Pro operace s vysokým zatížením Aspose.Email nabízí vlastnost ‘use_multi_connection’ třídy Pop3Client třída pro použití více připojení při načítání e‑mailů. Nicméně použití tohoto režimu nemusí nutně vést ke zvýšení výkonu. Následující úryvek kódu ukazuje, jak navázat spojení s POP3 serverem, nakonfigurovat klienta tak, aby umožnil až 5 souběžných připojení, a zapnout režim více připojení pro načtení informací o zprávách přítomných na serveru.

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()

Načítání zpráv ze serveru a jejich ukládání na disk

Uložit zprávu na disk bez parsování

Pokud chcete stáhnout e‑mailové zprávy ze serveru POP3 bez jejich parsování, použijte funkci SaveMessage třídy Pop3Client. Funkce SaveMessage neparsuje e‑mailovou zprávu, takže je rychlejší než funkce FetchMessage. Následující úryvek kódu ukazuje, jak uložit zprávu podle jejího pořadového čísla, v tomto případě číslo 1. Metoda SaveMessage uloží zprávu v původním formátu EML bez parsování.

Analyzovat zprávu před uložením

Použijte metodu ‘fetch_message’ objektu klienta vytvořeného pomocí Pop3Client třída pro načtení zprávy s konkrétním pořadovým číslem. Níže uvedený ukázkový kód demonstruje, jak načíst konkrétní zprávu a uložit ji pomocí jejího předmětu jako názvu souboru voláním metody ‘save’ na objektu 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)

Filtrování zpráv podle odesílatele, příjemce nebo data

Třída Pop3Client, popsaná v kapitole Připojení k POP3 serveru, poskytuje metodu list_messages(), která získá všechny zprávy z poštovní schránky. Pro získání pouze zpráv, které splňují určitý stav, použijte přetíženou metodu ListMessages(), která přijímá jako argument objekt MailQuery. Třída MailQuery poskytuje různé vlastnosti pro specifikaci podmínek dotazu, například datum, předmět, odesílatele, příjemce atd. Třída MailQueryBuilder se používá k vytvoření vyhledávacího výrazu. Nejprve se nastaví všechny podmínky a omezení a poté se MailQuery naplní dotazem vytvořeným pomocí MailQueryBuilder. Objekt třídy MailQuery používá Pop3Client k extrakci filtrovaných informací ze serveru. Tento článek ukazuje, jak filtrovat e‑mailové zprávy z poštovní schránky. První příklad ilustruje, jak filtrovat zprávy podle data a předmětu. Dále ukazujeme, jak filtrovat podle dalších kritérií a jak sestavit složitější dotazy. Také je ukázáno použití filtru Datum a čas pro získání konkrétních e‑mailů ze schránky. Navíc je ukázáno, jak použít filtrování rozlišující velikost písmen.

Filtrování zpráv ze schránky

Pro filtrování zpráv ze schránky:

  1. Připojte se a přihlaste k POP3 serveru.
  2. Vytvořte instanci MailQuery a nastavte požadované vlastnosti.
  3. Vyvolejte metodu Pop3Client.list_messages(MailQuery query) a předávejte v parametrech objekt MailQuery, aby se získaly pouze filtrované zprávy.

Následující úryvek kódu ukazuje, jak se připojit k POP3 poštovní schránce a získat zprávy, které dorazily dnes a mají ve předmětu slovo "newsletter".

Získání zpráv splňujících konkrétní kritéria

Aspose.Email také umožňuje vytvořit složitá kritéria vyhledávání pro dotazování a filtrování e‑mailových zpráv. K tomuto účelu použijte MailQueryBuilder třída a její vlastnosti. Kritéria pro načítání jsou následující:

  • Načíst zprávy podle data doručení.
  • Načíst zprávy v rozsahu.
  • Načíst zprávy od konkrétního odesílatele.
  • Načíst zprávy z konkrétní domény.
  • Načíst zprávy pro konkrétního příjemce.

Dnešní datum

Pro načtení zpráv podle data doručení použijte vlastnost ‘internal_date’ podle ukázky kódu níže:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Rozsah dat

Pro načtení zpráv v rámci časového intervalu použijte stejnou vlastnost ‘internal_date’ s určením rozsahu dat podle ukázky kódu níže:

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))

Konkrétní odesílatel

Pro načtení zpráv od konkrétního odesílatele použijte vlastnost ‘from_address’ podle ukázky kódu níže:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Konkrétní doména

Pro načtení zpráv z konkrétní domény použijte vlastnost ‘from_address’ podle ukázky kódu níže:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Konkrétní příjemce

Pro načtení zpráv pro konkrétního příjemce použijte vlastnost ’to’ podle ukázky kódu níže:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Vytváření složitých dotazů

Někdy je nutné splnit více než jeden dotaz. Aspose.Email to umožňuje kombinací dotazů v několika výrazech. Vytvořte MailQueryBuilder objekt a použít jeho vlastnosti k vytvoření konkrétních dotazů.

Kombinování dotazů pomocí AND

Následující úryvek kódu ukazuje, jak kombinovat dotazy pomocí 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")

Kombinování dotazů pomocí OR

Následující úryvek kódu ukazuje, jak kombinovat dotazy 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"))

Použití filtrů rozlišujících velikost písmen

API také poskytuje možnost filtrovat e‑maily z poštovní schránky na základě kritéria rozlišujícího velikost písmen. Následující metody StringComparisonField třída poskytuje možnost vyhledávat e‑maily s určením rozlišování velikosti písmen.

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)

Následující úryvek kódu ukazuje, jak implementovat tuto schopnost do vašeho projektu:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)