Recupera e elenca email dal server IMAP
Elenca messaggi dalla casella di posta
Il metodo ’list_messages’ della ImapClient la classe recupera un elenco di tutti i messaggi dalla cartella attualmente selezionata (in questo caso la "Inbox"). Questo elenco contiene oggetti di metadati dei messaggi, che tipicamente includono informazioni come ID messaggio, numeri di sequenza, UID e possibilmente dati riepilogativi come le righe dell’oggetto o le informazioni del mittente.
Il frammento di codice seguente dimostra come recuperare i metadati dei messaggi dalla Posta in arrivo e stampare il numero totale di messaggi contenuti:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
messages = client.list_messages()
print(f"Total Messages: {len(messages)}")
Elenca messaggi con supporto alla paginazione
In scenari in cui il server di posta contiene un gran numero di messaggi nella casella, è spesso desiderabile elencare o recuperare i messaggi con supporto alla paginazione. Aspose.Email ImapClient classe ti consente di recuperare i messaggi dal server con supporto alla paginazione.
Elenca i messaggi ricorsivamente
Il protocollo IMAP consente l’elenco ricorsivo dei messaggi da una cartella della casella di posta. Consente anche di elencare i messaggi dalle sue sottocartelle. Il frammento di codice seguente dimostra come elencare i messaggi in modo ricorsivo:
Elenca gli ID dei messaggi MIME
Il ImapMessageInfo la classe offre un modo conveniente per accedere al MIME MessageId per identificare i messaggi senza dover estrarre l’intero contenuto del messaggio. Di seguito un frammento di codice che dimostra come elencare i MIME MessageId:
Elenca messaggi con MultiConnection
Il ImapClient la classe offre una proprietà use_multi_connection, che consente l’uso di più connessioni per operazioni con carichi elevati. Inoltre, è possibile specificare il numero di connessioni in modalità multi-connessione usando la proprietà connections_quantity. Il seguente frammento di codice illustra come utilizzare la modalità multi-connessione per elencare i messaggi:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_col = client.list_messages(True)
Si noti che l’uso di questa modalità non porta necessariamente a un aumento delle prestazioni.
Recupera messaggi per numero di sequenza o ID unico
L’API Aspose.Email consente di generare due elenchi di messaggi, uno contenente i numeri di sequenza e un altro contenente gli ID unici di tutti i messaggi nella posta in arrivo. Per recuperare i messaggi dal server IMAP per i loro identificatori, usa il metodo fetch_messages della ImapClient classe. Il frammento di codice seguente dimostra come elencare i messaggi per identificatori:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)
# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]
# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))
# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))
Recupera messaggi in ordine decrescente
Il compito viene realizzato definendo le impostazioni di paginazione per il recupero dei messaggi. A tal fine, usa la proprietà ascending_sorting della PageSettings classe che fa parte del modulo del client IMAP. Imposta l’attributo ascending_sorting sulla PageSettings imposta l’oggetto su False. Questo indica che i messaggi dovrebbero essere ordinati in ordine decrescente per impostazione predefinita durante il recupero. Il seguente frammento di codice mostra come recuperare i messaggi in ordine decrescente:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items
for message in messages:
print(message.subject)
Recupera messaggi dal server e salvali su disco
Il ImapClient la classe può recuperare messaggi da un server IMAP e salvarli in formato EML su disco locale. I passaggi seguenti sono necessari per salvare i messaggi su disco:
- Usa il ImapClient classe con i parametri necessari (host, porta, nome utente, password) per connettersi al server IMAP.
- Seleziona la cartella desiderata chiamando il metodo select_folder (es., "Inbox")
- Recupera i messaggi iterandoli con il metodo list_messages.
- Per salvare i messaggi, per ciascun messaggio utilizza il metodo save_message specificando la directory e aggiungendo l’ID unico al nome del file per garantirne l’unicità.
Il seguente frammento di codice mostra come recuperare i messaggi email da un server e salvarli:
Salva messaggi in formato MSG
Per salvare le email in formato MSG, chiama il metodo fetch_message della ImapClient classe. Restituisce il messaggio in un’istanza di MailMessage classe. Il metodo MailMessage.save() può quindi essere chiamato per salvare il messaggio in formato MSG. Il seguente frammento di codice mostra come salvare i messaggi in formato MSG.
Recupera parametri extra del messaggio (Info di riepilogo)
Il frammento di codice seguente dimostra come interagire con un server email usando Aspose.Email ImapClient per inviare e manipolare i messaggi email. Il codice usa l’UID del messaggio per recuperare informazioni di riepilogo con parametri aggiuntivi ("X-GM-MSGID", "X-GM-THRID"). Informazioni simili vengono recuperate usando il numero di sequenza.
Ottieni intestazione List-Unsubscribe
L’intestazione "ListUnsubscribe" è comunemente inclusa nelle intestazioni dei messaggi email inviati da mailing list o sistemi di posta elettronica automatizzati. Fornisce un collegamento o un indirizzo email che i destinatari possono utilizzare per annullare l’iscrizione alla mailing list o alle email automatiche. Aspose.Email fornisce la proprietà ’list_unsubscribe’ di ImapMessageInfo classe per recuperare questa intestazione. Il frammento di codice sottostante dimostra l’uso della proprietà e può essere utilizzato come parte di un sistema per automatizzare il processo di annullamento dell’iscrizione da email indesiderate:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
message_info_col = client.list_messages()
# Iterate through each message
for imap_message_info in message_info_col:
print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)
Ottieni informazioni di identificazione del messaggio
Durante il recupero e l’elaborazione dei messaggi email, è possibile ottenere i dettagli dei messaggi usando i loro numeri di sequenza.
Le seguenti funzionalità sono usate per interagire con una casella IMAP:
-
Aspose.Email.ImapMessageInfo classe - Rappresenta le informazioni di identificazione di un messaggio in una casella.
-
Aspose.Email.ImapMessageInfo.sequence_number proprietà - Il numero di sequenza di un messaggio.
-
Aspose.Email.ImapMessageInfo.unique_id proprietà - L’ID univoco di un messaggio.
Il frammento di codice seguente mostra come ottenere le informazioni di identificazione dei messaggi:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
msg_infos = client.list_messages("INBOX")
for msg_info in msg_infos:
# fetch by sequence number
msg = client.fetch_message(msg_info.sequence_number)
# fetch by unique id
msg = client.fetch_message(msg_info.unique_id)
Elenca gli allegati dei messaggi email IMAP
Per ottenere informazioni sugli allegati come nome, dimensione senza scaricare i dati dell’allegato, usa le seguenti risorse della libreria:
-
ImapAttachmentInfo classe - Rappresenta le informazioni di un allegato (dimensione, nome, tipo media).
-
ImapAttachmentInfoCollection classe - Rappresenta la collezione di ImapAttachmentInfo.
-
list_attachments(sequence_number) metodo della ImapClient classe - Ottiene un iterabile o una collezione di informazioni sugli allegati del messaggio.
Il seguente esempio di codice dimostra come elencare gli allegati per ogni messaggio email usando Aspose.Email ImapClient:
# List messages
message_info_col = client.list_messages()
# Iterate through each message
for message_info in message_info_col:
print(f"Attachments for message with sequence number {message_info.sequence_number}:")
# List attachments for the current message
attachment_info_col = client.list_attachments(message_info.sequence_number)
# Iterate through each attachment
for attachment_info in attachment_info_col:
print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")