Lavorare con i messaggi dal server

Ottenere informazioni sulla casella di posta

Possiamo ottenere informazioni sulla casella di posta, come il numero di messaggi e la dimensione della casella, usando i metodi GetMailBoxSize() e GetMailBoxInfo().

  • Il metodo GetMailBoxSize() restituisce la dimensione della casella di posta in byte.
  • Il metodo GetMailBoxInfo() restituisce un oggetto di tipo Pop3MailBoxInfo.

È anche possibile ottenere il numero di messaggi usando la proprietà MessageCount e la dimensione usando la proprietà OccupiedSize. Il seguente esempio di codice mostra come ottenere informazioni sulla casella di posta. Mostra come:

  1. Crea un Pop3Client.
  2. Connettersi a un server POP3.
  3. Ottieni la dimensione della casella di posta.
  4. Ottieni informazioni sulla casella di posta.
  5. Ottieni il numero di messaggi nella casella di posta.
  6. Ottieni la dimensione occupata.

Ottenere il conteggio delle e‑mail nella casella

Il seguente frammento di codice mostra come contare i messaggi email in una casella di posta.

Aspose.Email consente agli sviluppatori di lavorare con le email in molteplici modi. Ad esempio, possono recuperare le informazioni delle intestazioni prima di decidere se scaricare un’email. Oppure possono recuperare email da un server e salvarle senza analizzarle (più veloce) o dopo l’analisi (più lento). Questo articolo mostra come recuperare e convertire le email.

Recupero delle informazioni delle intestazioni email

Le intestazioni delle e‑mail possono fornire informazioni su un messaggio e‑mail che possiamo usare per decidere se recuperare o meno l’intero messaggio. Tipicamente, le informazioni delle intestazioni includono mittente, oggetto, data di ricezione ecc. (Le intestazioni delle e‑mail sono descritte in dettaglio in Personalizzare le intestazioni delle e‑mail. Questo argomento riguarda specificamente l’invio di e‑mail con SMTP, ma le informazioni delle intestazioni rimangono valide per le e‑mail POP3). I seguenti esempi mostrano come recuperare le intestazioni delle e‑mail da un server POP3 tramite il numero di sequenza del messaggio.

Recupero dei messaggi email

Il componente di classe Aspose.Email.Pop3 fornisce la capacità di recuperare messaggi e‑mail dal server POP3 e di analizzarli in un’istanza MailMessage con l’aiuto dei componenti MailMessage. La classe MailMessage contiene numerose proprietà e metodi per manipolare il contenuto delle e‑mail. Utilizzando la funzione FetchMessage della classe Pop3Client, è possibile ottenere un’istanza MailMessage direttamente dal server POP3. Il seguente frammento di codice mostra come recuperare un messaggio e‑mail completo dal server POP3.

Recupero delle informazioni di riepilogo del messaggio usando l’ID unico

Il client POP3 dell’API può recuperare le informazioni di riepilogo del messaggio dal server usando l’ID univoco del messaggio. Ciò fornisce un accesso rapido alle informazioni sintetiche del messaggio senza dover prima recuperare il messaggio completo dal server. Il seguente frammento di codice mostra come recuperare le informazioni di riepilogo del messaggio.

Elenco dei messaggi con MultiConnection

Per operazioni ad alto carico, Aspose.Email offre la proprietà ‘use_multi_connection’ del Pop3Client classe per utilizzare più connessioni durante il recupero delle e‑mail. Tuttavia, l’uso di questa modalità non porta necessariamente a un aumento delle prestazioni. Il seguente frammento di codice mostra come stabilire una connessione a un server POP3, configurare il client per consentire fino a 5 connessioni concorrenti e abilitare la modalità multi‑connessione per recuperare informazioni sui messaggi presenti sul server:

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

Recuperare messaggi dal server e salvarli su disco

Salva il messaggio su disco senza analisi

Se desideri scaricare messaggi e‑mail dal server POP3 senza analizzarli, utilizza la funzione SaveMessage della classe Pop3Client. La funzione SaveMessage non analizza il messaggio e‑mail, quindi è più veloce della funzione FetchMessage. Il seguente frammento di codice mostra come salvare un messaggio per il suo numero di sequenza, in questo caso il numero 1. Il metodo SaveMessage salva il messaggio nel formato EML originale senza analizzarlo.

Analizza il messaggio prima di salvarlo

Utilizza il metodo ‘fetch_message’ dell’oggetto client creato usando Pop3Client classe per recuperare il messaggio con un numero di sequenza specifico. Il seguente esempio di codice dimostra come recuperare un messaggio specifico e salvarlo utilizzando il suo oggetto come nome del file chiamando il metodo ‘save’ sull’oggetto 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)

Filtrare i messaggi per mittente, destinatario o data

La classe Pop3Client, descritta in Connessione a un server POP3, fornisce il metodo list_messages() che recupera tutti i messaggi da una casella di posta. Per ottenere solo i messaggi che soddisfano una certa condizione, utilizza il metodo sovraccaricato ListMessages() che accetta un oggetto MailQuery come argomento. La classe MailQuery fornisce varie proprietà per specificare le condizioni della query, ad esempio data, oggetto, mittente, destinatario e così via. La classe MailQueryBuilder è usata per costruire l’espressione di ricerca. Prima si impostano tutte le condizioni e i vincoli, quindi MailQuery viene popolata con la query sviluppata da MailQueryBuilder. L’oggetto della classe MailQuery è utilizzato da Pop3Client per estrarre le informazioni filtrate dal server. Questo articolo mostra come filtrare i messaggi e‑mail da una casella. Il primo esempio illustra come filtrare i messaggi in base alla data e all’oggetto. Mostriamo anche come filtrare su altri criteri e come costruire query più complesse. Viene inoltre mostrata l’applicazione del filtro Data e Ora per recuperare e‑mail specifiche dalla casella. Inoltre, mostra come applicare il filtraggio sensibile alle maiuscole/minuscole.

Filtrare i messaggi dalla casella di posta

Per filtrare i messaggi da una casella di posta:

  1. Connettiti e accedi a un server POP3.
  2. Crea un’istanza di MailQuery e imposta le proprietà desiderate.
  3. Chiama il metodo Pop3Client.list_messages(MailQuery query) e passa il MailQuery come parametro per ottenere solo i messaggi filtrati.

Il seguente frammento di codice mostra come connettersi a una casella POP3 e ottenere i messaggi arrivati oggi e che contengono la parola "newsletter" nell’oggetto.

Ottenere messaggi che soddisfano criteri specifici

Aspose.Email consente inoltre di costruire criteri di ricerca complessi per interrogare e filtrare i messaggi e‑mail. Per questo scopo usa il MailQueryBuilder La classe e le sue proprietà. I criteri per il recupero sono i seguenti:

  • Recupera i messaggi per data di consegna.
  • Recupera i messaggi entro un intervallo.
  • Recupera i messaggi da un mittente specifico.
  • Recupera i messaggi da un dominio specifico.
  • Recupera i messaggi per un destinatario specifico.

Data di oggi

Per recuperare i messaggi per data di consegna, usa la proprietà ‘internal_date’ come mostrato nel codice seguente:

import aspose.email as ae
from datetime import datetime

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

Intervallo di date

Per recuperare i messaggi entro un intervallo di date, usa la stessa proprietà ‘internal_date’ specificando l’intervallo di date come mostrato nel codice seguente:

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

Mittente specifico

Per recuperare i messaggi da un mittente specifico, usa la proprietà ‘from_address’ come mostrato nel codice seguente:

import aspose.email as ae

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

Dominio specifico

Per recuperare i messaggi da un dominio specifico, usa la proprietà ‘from_address’ come mostrato nel codice seguente:

import aspose.email as ae

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

Destinatario specifico

Per recuperare i messaggi destinati a un destinatario specifico, usa la proprietà ’to’ come mostrato nel codice seguente:

import aspose.email as ae

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

Costruire Query Complesse

Talvolta è necessario soddisfare più di una query. Aspose.Email lo rende possibile combinando le query in diverse istruzioni. Crea una MailQueryBuilder oggetto e utilizzare le sue proprietà per costruire query specifiche.

Combinare Query con AND

Il seguente frammento di codice mostra come combinare query con 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")

Combinare Query con OR

Il seguente frammento di codice mostra come combinare le query con OR.

import aspose.email as ae

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

Applicazione di filtri case sensitive

L’API fornisce anche la capacità di filtrare le e‑mail dalla casella in base a criteri sensibili al maiuscolo/minuscolo. I seguenti metodi del StringComparisonField La classe fornisce la capacità di cercare e‑mail specificando flag sensibili al maiuscolo/minuscolo.

Method Aspose.Email.StringComparisonField.contains(value, ignore_case) Method Aspose.Email.StringComparisonField.equals(value, ignore_case) Method Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Method Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Il seguente frammento di codice mostra come implementare questa funzionalità nel tuo progetto:

import aspose.email as ae

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