Creazione e gestione delle email
Creazione di un nuovo messaggio email
Il MailMessage la classe rappresenta un messaggio email e consente agli sviluppatori di creare nuovi messaggi email. Proprietà di base come From, To, Subject e body possono essere facilmente associate al nuovo messaggio. Allo stesso modo possiamo salvare il messaggio in formati diversi come EML, MSG e MHTML.
- Crea un’istanza di MailMessage classe.
- Imposta le proprietà del messaggio di posta.
- Salva il messaggio di posta in diversi formati.
Il frammento di codice seguente mostra come creare una nuova email con diverse proprietà.
Specificare più destinatari
Il MailMessage oggetto rappresenta un messaggio email. Le istanze del MailMessage classi sono usate per costruire messaggi email che vengono trasmessi a un server SMTP usando il SmtpClient classe. Questo articolo dimostra come specificare più di un indirizzo email. Gli indirizzi email possono essere specificati usando il MailMessage classe. Sono:
- To - Gli indirizzi dei destinatari possono essere specificati nel campo ‘To’. I destinatari del campo ‘To’ sono il pubblico principale del messaggio. Possono esserci più di un indirizzo destinatario.
- Cc - CC sta per "carbon copy" o "courtesy copy" e consente di aggiungere destinatari email che devono vedere l’email ma che non sono necessariamente tenuti ad agire su di essa. Manager, ad esempio, o membri del tuo team che devono essere informati di una conversazione. Con Aspose.Email, gli indirizzi CC possono essere specificati nel tuo codice. In questo modo, le email automatiche, o tutte le email a un indirizzo specifico, possono essere copiate al personale pertinente.
- Bcc - Bcc, blind carbon copy, consente di inviare un’email a un destinatario nascosto agli altri destinatari. Dove un CC appare nelle informazioni email che i destinatari principali vedono, un Bcc no. È pensato per notifiche nascoste.
Per specificare più indirizzi email in un messaggio, segui questi passaggi:
- Crea un’istanza di MailMessage classe.
- Specifica l’indirizzo From e più indirizzi To, Cc e Bcc usando il
MailMessageistanza. - Crea un’istanza di SmtpClient classe e invia l’email usando il metodo Send.
Il campione di codice seguente mostra come specificare più indirizzi To, CC e BCC.
Impostazione dei nomi visualizzati di mittente e destinatario
I campioni di programmazione di seguito dimostrano come cambiare gli indirizzi email in nomi amichevoli in un messaggio email. Un nome amichevole è un nome più comprensibile dell’indirizzo email, per esempio John Smith invece di js346@domain.com. Quando si invia un’email, possiamo associare un nome amichevole a un indirizzo email nel MailMessage costruttore della classe.
Per cambiare gli indirizzi email in nomi amichevoli in un messaggio email, segui questi passaggi:
- Crea un’istanza di MailMessage classe e specifica gli indirizzi email nei campi To e From insieme a nomi amichevoli.
- Specifica gli indirizzi Cc e Bcc insieme a nomi amichevoli chiamando il MailMessage costruttore della classe nel
MailMessageistanza. - Crea un’istanza di SmtpClient classe e invia l’email usando il Invia metodo.
Il seguente frammento di codice mostra come visualizzare i Nomi per gli indirizzi email.
Impostazione dell’oggetto di un’email
Il MailMessage classe ti consente di specificare il riassunto conciso del contenuto del messaggio usando il oggetto proprietà. Il seguente esempio di codice dimostra come creare un’email e impostarne l’oggetto:
from aspose.email import MailMessage
# Create a new email message
message = MailMessage()
# Set the subject of the email
message.subject = "Meeting Reminder: Project Update"
# Set other email properties (optional)
message.from_address = "sender@example.com"
message.to.append("recipient@example.com")
message.body = "This is a reminder for the upcoming project update meeting."
# Print the email details
print(f"Subject: {message.subject}")
print(f"From: {message.from_address}")
print(f"To: {', '.join(message.to)}")
print(f"Body: {message.body}")
Impostazione del corpo email
Oltre all’oggetto del messaggio, il corpo dell’email può essere specificato usando lo stesso MailMessage classe. Un’email può avere più corpi. Ci sono due tipi di corpi nella classe:
- Corpo HTML
- Corpo testuale
In aggiunta a HtmlBody e TextBody, Aspose.Email ha altre due proprietà di sola lettura relative al corpo della posta:
IsBodyText: indica all’utente se il corpo è testo.IsBodyHtml: indica all’utente se il corpo è HTML o testo semplice.
Questo articolo mostra come definire testo semplice o HTML per il corpo, impostare testo alternativo e codificare il corpo dell’email.
Impostazione del corpo HTML
Il corpo HTML è usato per specificare il contenuto HTML del corpo di un messaggio. Il corpo HTML deve essere racchiuso tra i tag . Il frammento di codice seguente mostra come impostare il corpo HTML.
Impostazione del testo alternativo
Usa il AlternateView classe per specificare copie di un messaggio email in formati diversi. Ad esempio, se invii un messaggio in HTML, potresti anche fornire una versione testuale nel caso alcuni destinatari usino client email che non possono visualizzare contenuti HTML. Questa classe ha due proprietà, linked_resources e base_uri, che sono usati per risolvere gli URL all’interno del contenuto dell’email.
- LinkedResources è una collezione di oggetti LinkedResources. Quando renderizzati, gli URL nel contenuto dell’email sono prima confrontati con gli URL nel Content Link di ogni oggetto LinkedResources nella collezione, e risolti.
- BaseUri è usato dal lettore di mail per risolvere URL relativi all’interno del corpo, e anche per risolvere URL di Content Link relativi, nella collezione LinkedResources.
Il seguente frammento di codice mostra come impostare il testo alternativo.
Caratteristiche di MailMessage
Il MailMessage classe rappresenta il contenuto di un messaggio email. Le istanze della MailMessage classe viene utilizzata per costruire un messaggio email che viene trasmesso a un server SMTP per la consegna utilizzando il SmtpClient classe. Questo articolo mostra come usare MailMessage funzionalità di utilità della classe per controllare le seguenti caratteristiche dell’email:
- Data e ora - Through the MailMessage proprietà class Date consente di ottenere o impostare la data e l’ora di un’email.
- Priorità del messaggio - Il MailPriority classe specifica i livelli di priorità per l’invio di un messaggio email. Può essere bassa, normale o alta. La priorità influenza la velocità di trasmissione e la consegna.
- Sensibilità del messaggio - Il MailSensitivity classe specifica cinque livelli di sensibilità.
- Notifica di consegna - Le notifiche di consegna informano il mittente che l’email inviata è stata recapitata nella casella del destinatario.
Per impostazione predefinita, la data è la data effettiva in cui il messaggio è stato inviato e l’ora è l’ora in cui è stato inviato, come visualizzato da Microsoft Outlook. Tuttavia, il vero tempo di consegna dell’email è aggiunto dal server SMTP stesso nell’intestazione della posta. Ad esempio, di seguito è mostrata un’intestazione di posta comune, dove Date imposta il campo Date.
import aspose.email as ae
from aspose.email import MailMessage
# Create a new MailMessage instance
message = MailMessage()
# Add SMTP headers to the message
message.headers.add("Received", "from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700")
message.headers.add("Return-Path", "<xyz@oikoscucine.it>")
message.headers.add("Received", "from 195.120.225.20 (HELO mail.oikoscucine.it) by aspose.com with esmtp (:1CYY+<LA*- *1WK@) id Q8,/O/-.N83@7-9M for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300")
# Set email details
message.from_address = "XYZ <xyz@oikoscucine.it>"
message.to.append("abc@aspose.com")
message.subject = "For ABC"
message.date = "Thu, 22 Feb 2007 20:58:51 +0300"
message.message_id = "<01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>"
message.headers.add("MIME-Version", "1.0")
message.headers.add("Content-Type", "multipart/alternative; boundary=\"----=_NextPart_000_0006_01C7569A.58DF4CD0\"")
message.headers.add("X-Mailer", "Microsoft Office Outlook, Build 11.0.5510")
message.headers.add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2800.1106")
message.headers.add("Thread-Index", "Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==")
message.headers.add("X-Read", "1")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
Il frammento di codice sotto illustra come ciascuna delle funzionalità discusse sopra può essere usata.
import aspose.email as ae
from aspose.email import MailMessage, MailPriority, MailSensitivity
from datetime import datetime
# Create a new MailMessage instance
message = MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
# Set additional properties
message.date = datetime.now()
message.priority = MailPriority.HIGH
message.sensitivity = MailSensitivity.NORMAL
message.headers.add("X-Mailer", "Aspose.Email")
# Save the message as an EML file
message.save("output.eml", ae.EmlSaveOptions())
Richiedere una Conferma di Lettura
Gli esempi di programmazione seguenti mostrano come è possibile richiedere una ricevuta di lettura. Il MailMessage classe DeliveryNotificationOptions La proprietà di enumerazione descrive le opzioni di notifica di consegna per un’email. Per richiedere una ricevuta di lettura dopo aver inviato un’email, segui questi passaggi:
- Crea un’istanza di MailMessage classe.
- Specifica mittente, destinatario e corpo HTML per l’email nella MailMessage istanza.
- Specificare il DeliveryNotificationOptions in altri MailMessage istanze.
- Crea un’istanza di SmtpClient classe e invia l’email usando il metodo Send.
Le richieste di ricevuta di lettura potrebbero non essere sempre onorate perché:
- Un client di posta potrebbe non implementare tale funzionalità.
- L’utente finale potrebbe avere quella funzionalità disattivata.
- L’utente finale potrebbe scegliere di non inviarne una.
Il seguente frammento di codice mostra come richiedere una ricevuta di lettura.
import aspose.email as ae
from aspose.email import MailMessage, SmtpClient, DeliveryNotificationOptions
# Create an instance of MailMessage class
message = MailMessage()
# Specify From, To, HtmlBody, and DeliveryNotificationOptions
message.from_address = "sender@sender.com"
message.to.append("receiver@receiver.com")
message.html_body = "<html><body>This is the Html body</body></html>"
message.delivery_notification_options = DeliveryNotificationOptions.ON_SUCCESS
message.headers.add("Return-Receipt-To", "sender@sender.com")
message.headers.add("Disposition-Notification-To", "sender@sender.com")
# Create an instance of SmtpClient class
client = SmtpClient()
# Specify your mailing host server, Username, Password, and Port
client.host = "smtp.server.com"
client.username = "Username"
client.password = "Password"
client.port = 25
try:
# Client.send will send this message
client.send(message)
# Display 'Message sent' only if the message is sent successfully
print("Message sent")
except Exception as ex:
import traceback
traceback.print_exc()
Impostare le Intestazioni Email
Le intestazioni email rappresentano uno standard Internet e gli RFC definiscono i campi di intestazione inclusi nei messaggi email Internet. Un’intestazione email può essere specificata usando la classe MailMessage. I tipi di intestazione comuni sono definiti nella classe HeaderType. È una classe sealed che funziona come una normale enumerazione.
Normalmente un’intestazione email contiene questi campi:
- To: Gli indirizzi dei destinatari possono essere specificati nel campo To. Questi destinatari sono il pubblico principale del messaggio. Possono esserci più di un indirizzo destinatario.
- From: Questo campo presenta l’indirizzo email del mittente del messaggio.
- Cc: Consente agli utenti di inviare un messaggio come "Carbon Copy" o "Courtesy Copy". Il destinatario non è tenuto a rispondere o agire. Tipicamente, il personale di supervisione è notificato con CC.
- Bcc: Sta per Blind Carbon Copy, si riferisce alla pratica di inviare un messaggio a più destinatari in modo che ciò che ricevono non contenga l’elenco completo dei destinatari. È destinato a notifiche nascoste.
- ReplyTo: Questo campo di intestazione indica dove il mittente desidera ricevere le risposte.
- Subject: Titolo, intestazione, oggetto. Spesso usato come indicatore di thread per messaggi che rispondono o commentano altri messaggi.
- Date: Questa intestazione specifica una data (e ora). Normalmente è la data in cui il messaggio è stato composto e inviato.
- XMailer: Informazioni sul software client dell’origine. Esempio: X-Mailer: Aspose.Email. XMailer è usato dai client di posta. Diversi client hanno valori XMailer differenti. Il valore XMailer di MS Outlook è Microsoft Office Outlook, Build 11.0.5510. Viene ignorato dal destinatario o dal lettore email.
Normalmente, un’intestazione email appare così:
Reply-To: reply@reply.com
From: sender@sender.com
To: guangzhou@guangzhoo.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
Per personalizzare un’intestazione email, segui questi passaggi:
- Crea un’istanza di MailMessage classe.
- Specifica To, From, CC, Bcc, ReplyTo, Subject, Date e XMailer usando un’istanza della MailMessage.
- Crea un’istanza di MimeHeader classe e specifica l’intestazione segreta.
- Aggiungi l’intestazione segreta al MailMessage istanza.
Il frammento di codice seguente mostra come impostare le intestazioni email.
import aspose.email as ae
from aspose.email import MailMessage
from datetime import datetime
# Create an instance of MailMessage class
message = MailMessage()
# Specify email details
message.reply_to_list.append("reply@reply.com")
message.from_address = "sender@sender.com"
message.to.append("receiver1@receiver.com")
message.cc.append("receiver2@receiver.com")
message.bcc.append("receiver3@receiver.com")
message.subject = "test mail"
message.date = datetime(2006, 3, 6)
message.headers.add("X-Mailer", "Aspose.Email")
Il frammento di codice sopra produce un’intestazione email nel seguente formato. Questo può essere osservato aprendo il file risultante "MsgHeaders.msg" in Microsoft Outlook e visualizzando le Proprietà.
Reply-To: reply@reply.com
From: sender@sender.com
To: receiver1@receiver.com
CC: receiver2@receiver.com
BCC: receiver3@receiver.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email
secret-header: mystery
Inserire l’Intestazione in una Posizione Specifica
Il Aggiungi metodo di HeadersCollection classe inserisce l’intestazione alla fine della collezione. Tuttavia, a volte può essere necessario inserire un’intestazione in una posizione specifica. In tal caso, la Aggiungi il metodo non sarà d’aiuto. Per ottenere ciò, usa il Insert metodo del HeadersCollection. Se la collezione contiene intestazioni con lo stesso nome, questa intestazione sarà inserita prima delle altre con lo stesso nome.
Il frammento di codice seguente mostra come inserire un’intestazione in una posizione specifica.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
Aggiungere Intestazioni Personalizzate all’email
L’esempio di programmazione qui sotto dimostra come specificare un’intestazione personalizzata in un messaggio email usando il MailMessage classe.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
Il frammento di codice sopra produce un’intestazione email nel seguente formato:
secret-header: mystery