Invia Email e Inoltra Messaggi via SMTP
Il SmtpClient La classe in Aspose.Email for Python via .NET fornisce un’interfaccia robusta e flessibile per l’invio di email tramite il Simple Mail Transfer Protocol (SMTP). È il punto di ingresso principale per gli sviluppatori che desiderano inviare messaggi email all’interno delle loro applicazioni.
Caratteristiche principali di SmtpClient includi la classe:
-
Consegna email SMTP: Consente l’invio di email direttamente tramite un server SMTP.
-
Opzioni di consegna alternative: Supporta metodi di consegna aggiuntivi come il salvataggio dei messaggi sul file system o la scrittura in una coda di messaggi.
-
Operazioni sincrone e asincrone:
-
Modalità sincrona: usa i metodi Send per bloccare il thread corrente fino a quando l’email è completamente trasmessa.
-
Modalità Asincrona: Usa i metodi SendAsync per inviare messaggi in background, consentendo all’applicazione di rimanere reattiva.
-
-
Supporto TNEF: Consente l’invio di messaggi in Transport Neutral Encapsulation Format (TNEF) per la compatibilità con le funzionalità di Microsoft Outlook.
Questo articolo copre tutte le principali funzionalità disponibili tramite il SmtpClient classe, che dimostra come inviare messaggi email standard e avanzati con pieno controllo su configurazione e consegna.
Invia Email in Modo Sincrono
Il SmtpClient.send il metodo consente di inviare un messaggio email in modo sincrono. Questo approccio è utile quando l’applicazione deve confermare la consegna prima di continuare.
Per inviare un’email di testo semplice in modo sincrono usando Aspose.Email per Python via .NET, utilizza i passaggi e il campione di codice seguente:
- Crea un MailMessage istanza e imposta mittente, destinatario(i), oggetto e corpo.
- Configura il SmtpClient con l’host del server, porta, nome utente e password.
- Chiama il
sendmetodo su SmtpClient istanza e passa il MailMessage oggetto.
# Create email
eml = ae.MailMessage()
eml.subject = "Message with Plain Text Body"
eml.body = "This is text body."
eml.from_address = "from@gmail.com"
eml.to.append(ae.MailAddress("to@gmail.com", "Recipient 1"))
# Configure SmtpClient object
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO
# Send email
client.send(eml)
Invia un file EML pre-composto via SMTP
Se hai bisogno di inviare un messaggio email già composto e salvato in formato EML, puoi caricarlo e inviarlo programmaticamente usando Aspose.Email for Python via .NET.
Il seguente frammento di codice con passaggi dimostra come inviare un file EML usando SmtpClient:
- Carica il file EML usando il MailMessage.load metodo.
- Crea e configura un’istanza di SmtpClient, fornendo l’host del server SMTP, il nome utente e la password per l’autenticazione.
- Chiama il
sendmetodo su SmtpClient istanza e passa il messaggio caricato.
import aspose.email as ae
message = ae.MailMessage.load("test.eml")
# Send this message using SmtpClient
client = ae.clients.SmtpClient("host", "username", "password")
client.send(message)
Invia un’email in testo semplice
Puoi inviare un’email in testo semplice usando Aspose.Email specificando il corpo del messaggio come testo semplice. Il MailMessage.body la proprietà è usata per definire il contenuto, mentre il SmtpClient la classe gestisce il processo di invio.
Il seguente frammento di codice con passaggi dimostra come inviare un’email in testo semplice:
- Crea un’istanza di MailMessage classe.
- Imposta gli indirizzi email del mittente e del destinatario.
- Assegna il contenuto in testo semplice alla proprietà body.
- Crea un’istanza di SmtpClient classe con i dettagli del server e le credenziali.
- Invia l’email utilizzando il
sendmetodo.
Invia email HTML
Aspose.Email for Python via .NET consente di inviare email con corpi formattati in HTML usando il MailMessage classe. Assegnando contenuto HTML al html_body proprietà e impostazione is_body_html impostandolo su True, puoi creare messaggi ricchi e stilizzati.
Il seguente esempio di codice con passaggi dimostra come inviare un’email HTML:
- Crea un’istanza di MailMessage classe.
- Imposta gli indirizzi email del mittente e del destinatario.
- Imposta
is_body_html = Trueper indicare la formattazione HTML. - Assegna il tuo contenuto HTML al
html_bodyproprietà. - Crea e configura il SmtpClient istanza.
- Usa il
sendmetodo per trasmettere il messaggio.
Nota: Sebbene questo esempio utilizzi HTML di base, è possibile incorporare strutture HTML più complesse per creare layout email reattivi e brandizzati.
Invia email HTML con alternativa in testo semplice
Quando si inviano email HTML, è buona pratica includere una versione in testo semplice per i destinatari i cui client email non supportano HTML. Aspose.Email for Python via .NET offre il AlternateView classe per includere sia contenuto HTML che testo semplice in un unico messaggio, migliorando compatibilità ed esperienza utente.
Il seguente esempio di codice e passaggi dimostrano come inviare un’email con contenuto di testo alternativo:
- Crea un’istanza di MailMessage classe.
- Imposta gli indirizzi email del mittente e del destinatario.
- Assegna il contenuto HTML al
html_bodyproprietà e impostais_body_html = True. - Crea una AlternateView in testo semplice usando create_alternate_view_from_string.
- Aggiungi la vista alternativa al
alternate_viewscollezione del MailMessage. - Crea e configura il SmtpClient istanza.
- Invia l’email utilizzando il
sendmetodo.
Come inviare email in blocco
L’invio di email in blocco comporta la spedizione di più messaggi contemporaneamente — ognuno potenzialmente indirizzato a un destinatario diverso. Aspose.Email fornisce questa capacità usando il SmtpClient classe.
Il campione di codice qui sotto dimostra come inviare un batch di email in un colpo solo:
- Crea un’istanza di SmtpClient classe e configura host, porta, credenziali e impostazioni di sicurezza.
- Crea più MailMessage istanze — ognuna rappresentante un singolo messaggio email.
- Specifica mittente, destinatario, oggetto e corpo del messaggio per ogni email.
- Aggiungi tutti MailMessage oggetti a un MailMessageCollection.
- Chiama il
sendmetodo del SmtpClient classe, passando il MailMessageCollection come argomento.
import aspose.email as ae
from aspose.email.clients import SmtpClient, SecurityOptions
from aspose.email import MailMessage, MailMessageCollection
# Create individual email messages
message1 = MailMessage("from@gmail.com", "to1@gmail.com", "Bulk Email - Message 1", "Hello, this is message 1.")
message2 = MailMessage("from@gmail.com", "to2@gmail.com", "Bulk Email - Message 2", "Hello, this is message 2.")
message3 = MailMessage("from@gmail.com", "to3@gmail.com", "Bulk Email - Message 3", "Hello, this is message 3.")
# Add messages to a collection
many_messages = MailMessageCollection()
many_messages.append(message1)
many_messages.append(message2)
many_messages.append(message3)
# Configure SMTP client
client = SmtpClient("smtp.gmail.com", 995, "username", "password")
client.security_options = SecurityOptions.AUTO
# Send all messages in bulk
client.send(many_messages)
Invia email con supporto multi-connessione
Aspose.Email for Python via .NET consente di utilizzare più connessioni simultanee quando si inviano email tramite il SmtpClient classe. Questa funzionalità può aiutare a ottimizzare le prestazioni durante l’invio di grandi volumi di email distribuendo il carico di lavoro su più connessioni. Tuttavia, tieni presente che l’abilitazione della modalità multi-connessione non garantisce un miglioramento delle prestazioni in tutti gli scenari — dipende dalla configurazione del server e dalle condizioni di rete.
Proprietà chiave:
-
use_multi_connection: Abilita o disabilita la modalità multi-connessione per il client SMTP. -
connections_quantity: Specifica il numero di connessioni da aprire quando la modalità multi-connessione è abilitata.
Il seguente esempio di codice mostra come abilitare la modalità multi-connessione:
- Crea e configura un’istanza di SmtpClient.
- Imposta i dettagli del server come host, porta, nome utente, password e crittografia.
- Abilita la modalità multi-connessione impostando
use_multi_connection. - Specificare il numero di connessioni con
connections_quantity.
import aspose.email as ae
client = ae.clients.smtp.SmtpClient
client.host = "<HOST>"
client.username = "<USERNAME>"
client.password = "<PASSWORD>"
client.port = 587
client.supported_encryption = ae.clients.base.EncryptionProtocols.TLS
client.security_options = ae.clients.SecurityOptions.SSL_EXPLICIT
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.send(messages)
Invia email formattate TNEF
Il Transport Neutral Encapsulation Format (TNEF) è un formato email proprietario utilizzato da Microsoft Outlook e Exchange per preservare formattazione ricca, oggetti incorporati e funzionalità speciali come pulsanti di voto. I client email standard potrebbero non mantenere questa formattazione quando si usano messaggi tipici basati su MIME.
Aspose.Email for Python via .NET supporta l’invio di email in formato TNEF per garantire che tutta la formattazione avanzata e le funzionalità siano preservate. Ciò si ottiene abilitando il use_tnef proprietà del SmtpClient classe.
Il seguente esempio di codice e passaggi dimostrano come inviare un’email TNEF:
- Carica un messaggio EML esistente o creane uno usando il MailMessage classe.
- Imposta gli indirizzi del mittente e del destinatario.
- Abilita la formattazione TNEF impostando
use_tnef = Truesul SmtpClient istanza. - Invia il messaggio usando il
send()metodo.
Invia richieste di riunione via email
Microsoft Outlook e altri client email con funzionalità calendario come IBM Lotus Notes consentono agli utenti di gestire gli appuntamenti direttamente dalla loro casella di posta. Quando un utente riceve un invito a una riunione, può accettarlo o rifiutarlo direttamente nel client email. Con Aspose.Email for Python via .NET, gli sviluppatori possono creare e inviare programmaticamente questi inviti in conformità con lo standard iCalendar (RFC 2445).
Come inviare inviti a riunioni via email
Aspose.Email fornisce supporto integrato per comporre e inviare richieste di riunione iCalendar come parte di un’email. Queste richieste sono compatibili con i client di calendario più diffusi e consentono ai destinatari di rispondere facilmente alle inviti.
|Richiesta di riunione iCalendar inviata via email| | :- | |
|
Il seguente frammento di codice mostra come inviare richieste via email:
- Crea un MailMessage istanza.
- Specifica gli indirizzi email del mittente e del destinatario.
- Crea un Appointment oggetto con posizione, orari di inizio/fine, mittente e destinatari.
- Imposta riepilogo e descrizione dell’appuntamento.
- Allega l’appuntamento all’email usando
add_alternate_view(). - Invia l’email utilizzando il SmtpClient.
Supporto iCalendar per IBM Lotus Notes
Aspose.Email usa il formato iCalendar (RFC 2445), che garantisce che le tue richieste di riunione siano compatibili con Microsoft Outlook, IBM Lotus Notes e qualsiasi altro client che supporti lo standard. Lo stesso processo può essere utilizzato indipendentemente dalla piattaforma del destinatario.
Inoltra email usando il client SMTP
L’inoltro di email è un compito comune nella comunicazione digitale, spesso usato per condividere messaggi ricevuti con altri. Aspose.Email for Python via .NET consente agli sviluppatori di inoltrare email programmaticamente usando il SmtpClient classe. Il metodo forward consente di inoltrare messaggi email salvati o ricevuti a nuovi destinatari senza coinvolgere il mittente originale.
Di seguito è riportato un esempio di codice che dimostra come inoltrare un’email usando il MailMessage classe:
Inoltra file EML senza caricarli in MailMessage
Aspose.Email supporta anche l’inoltro diretto di file .eml senza prima caricarli in un MailMessage oggetto. Questo è particolarmente utile in scenari dove è necessario minimizzare l’uso della memoria di sistema.
Il campione di codice qui sotto dimostra come inoltrare direttamente un file EML:
import aspose.email as ae
client = ae.clients.smtp.SmtpClient(host, smtp_port, username, password, ae.clients.SecurityOptions.AUTO)
file = open("test.eml", "rb")
client.forward(sender, recipients, file)