Création et gestion des e‑mails
Création d’un nouveau message e‑mail
Le MailMessage la classe représente un message e‑mail et permet aux développeurs de créer un nouveau message e‑mail. Les propriétés de base d’un e‑mail comme From, To, Subject et le corps peuvent être facilement associées au message créé. De même, nous pouvons enregistrer le message dans différents formats tels que EML, MSG et MHTML.
- Créez une instance de la MailMessage classe.
- Définir les propriétés du message mail.
- Enregistrer le message mail dans différents formats.
Le fragment de code suivant montre comment créer un nouveau e‑mail avec différentes propriétés.
Spécification de plusieurs destinataires
Le MailMessage objet représente un message e‑mail. Les instances du MailMessage classe est utilisée pour construire des messages e‑mail qui sont transmis à un serveur SMTP en utilisant le SmtpClient classe. Cet article montre comment spécifier plusieurs adresses e‑mail. Les adresses e‑mail peuvent être spécifiées en utilisant le MailMessage classe. Ce sont :
- To – Les adresses des destinataires peuvent être spécifiées dans le champ ‘To’. Les destinataires du champ ‘To’ constituent le public principal du message. Il peut y avoir plus d’une adresse de destinataire.
- Cc - CC signifie « copie carbone » ou « copie de courtoisie », et vous permet d’ajouter des destinataires qui doivent voir l’e‑mail mais qui ne sont pas forcément tenus d’y répondre. Par exemple, des managers ou les membres de votre équipe qui doivent être informés d’une conversation. Avec Aspose.Email, les adresses CC peuvent être spécifiées dans votre code. Ainsi, les e‑mails automatisés, ou tous les e‑mails vers une adresse spécifique, peuvent être copiés aux personnes concernées.
- Bcc - Bcc, copie carbone invisible, vous permet d’envoyer un e‑mail à un destinataire qui reste caché aux autres destinataires. Alors qu’un CC apparaît dans les informations de l’e‑mail visibles par les destinataires principaux, un Bcc ne le fait pas. Il sert à une notification cachée.
Pour spécifier plusieurs adresses e‑mail dans un message, suivez ces étapes :
- Créez une instance de la MailMessage classe.
- Spécifier les adresses From et plusieurs adresses To, Cc et Bcc en utilisant le
MailMessageinstance. - Créez une instance de la SmtpClient classe et envoyez l’e‑mail en utilisant la méthode Send.
L’exemple de code ci‑dessus montre comment spécifier plusieurs adresses To, CC et BCC.
Définition des noms d’affichage de l’expéditeur et du destinataire
Les exemples de programmation ci‑dessus démontrent comment remplacer les adresses e‑mail par des noms conviviaux dans un message. Un nom convivial est un nom plus lisible que l’adresse e‑mail, par exemple John Smith au lieu de js346@domain.com. Lors de l’envoi d’un e‑mail, nous pouvons associer un nom convivial à une adresse e‑mail dans le MailMessage constructeur de classe.
Pour remplacer les adresses e‑mail par des noms conviviaux dans un message, suivez ces étapes :
- Créez une instance de la MailMessage classe et spécifier les adresses e‑mail dans les champs To et From avec des noms d’affichage.
- Spécifier les adresses e‑mail Cc et Bcc ainsi que les noms d’affichage en appelant le MailMessage constructeur de classe dans le
MailMessageinstance. - Créez une instance de la SmtpClient classe et envoyer l’e‑mail en utilisant le Envoyer méthode.
Le fragment de code suivant montre comment afficher les noms des adresses e‑mail.
Définition du sujet d’un e‑mail
Le MailMessage classe vous permet de spécifier le résumé concis du contenu du message en utilisant le sujet propriété. L’exemple de code suivant montre comment créer un e‑mail et définir son sujet :
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}")
Définition du corps de l’e‑mail
En plus du sujet du message, le corps de l’e‑mail peut être spécifié en utilisant le même MailMessage classe. Un e‑mail peut avoir plusieurs corps. Il existe deux types de corps de mail dans la classe :
- Corps HTML
- Corps texte
En plus de HtmlBody et TextBody, Aspose.Email possède deux autres propriétés en lecture seule liées au corps du mail :
IsBodyText: indique à l’utilisateur si le corps est du texte.IsBodyHtml: indique à l’utilisateur si le corps est HTML ou texte brut.
Cet article montre comment définir un corps de texte brut ou HTML, définir un texte alternatif et encoder le corps du mail.
Définir le corps HTML
Le corps Html est utilisé pour spécifier le contenu HTML du corps du message. Le corps Html doit être encadré par les balises . Le fragment de code suivant montre comment définir le corps HTML.
Définir le texte alternatif
Utilisez le AlternateView classe pour spécifier des copies d’un message e‑mail dans différents formats. Par exemple, si vous envoyez un message en HTML, vous pouvez également fournir une version texte brut au cas où certains destinataires utilisent des lecteurs d’e‑mail qui ne peuvent pas afficher le contenu HTML. Cette classe possède deux propriétés, linked_resources et base_uri, qui sont utilisés pour résoudre les URL dans le contenu de l’e‑mail.
- LinkedResources est une collection d’objets LinkedResources. Lors du rendu, les URL du contenu de l’e‑mail sont d’abord comparées aux URL du Content Link de chaque objet LinkedResources de la collection, puis résolues.
- BaseUri est utilisé par le lecteur de mail pour résoudre les URL relatives à l’intérieur du corps, ainsi que pour résoudre les URL de lien de contenu relatives, dans la collection LinkedResources.
Le fragment de code suivant montre comment définir le texte alternatif.
Fonctionnalités de MailMessage
Le MailMessage classe représente le contenu d’un message e‑mail. Les instances de la MailMessage classe sont utilisées pour créer un message e‑mail qui est transmis à un serveur SMTP pour la remise en utilisant le SmtpClient classe. Cet article montre comment utiliser MailMessage Fonctionnalités utilitaires de classe permettant de contrôler les fonctionnalités d’e‑mail suivantes :
- Date et heure - Via le MailMessage Propriété de classe Date que nous obtenons ou définissons pour la date et l’heure d’un e‑mail.
- Priorité du message - Le MailPriority classe spécifie les niveaux de priorité pour l’envoi d’un message e‑mail. Elle peut être basse, normale ou élevée. La priorité influence la vitesse de transmission et la livraison.
- Sensibilité du message - Le MailSensitivity classe spécifie cinq niveaux de sensibilité.
- Notification de livraison - Les notifications de livraison informent l’expéditeur que l’e‑mail qu’il a envoyé a bien été livré dans la boîte de réception du destinataire.
Par défaut, la date correspond à la date réelle à laquelle le message a été envoyé, et l’heure correspond à l’heure d’envoi, comme affiché par Microsoft Outlook. Cependant, la véritable heure de livraison de l’e‑mail est ajoutée par le serveur SMTP lui‑même dans l’en‑tête du courrier. Par exemple, ci‑dessous se trouve un en‑tête de courrier commun, où Date définit le champ 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())
Le fragment de code ci‑dessous illustre comment chacune des fonctionnalités décrites ci‑above peut être utilisée.
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())
Demande d’accusé de lecture
Les exemples de code ci‑dessous montrent comment vous pouvez demander un accusé de lecture. Le MailMessage classe DeliveryNotificationOptions La propriété d’énumération décrit les options de notification de remise pour un e‑mail. Pour demander un accusé de lecture après l’envoi d’un e‑mail, suivez ces étapes :
- Créez une instance de la MailMessage classe.
- Spécifier l’expéditeur, le destinataire et le corps HTML pour le mail dans le MailMessage instance.
- Spécifiez le DeliveryNotificationOptions dans d’autres MailMessage instances.
- Créez une instance de la SmtpClient classe et envoyer le mail en utilisant la méthode Send.
Les demandes d’accusé de lecture ne sont pas toujours respectées parce que :
- Un client de messagerie peut ne pas implémenter cette fonctionnalité.
- L’utilisateur final peut avoir désactivé cette fonctionnalité.
- L’utilisateur final peut choisir de ne pas en envoyer.
Le fragment de code suivant montre comment demander un accusé de lecture.
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()
Définir les en‑têtes d’e‑mail
Les en‑têtes d’e‑mail représentent une norme Internet et le RFC définit les champs d’en‑tête inclus dans les messages e‑mail Internet. Un en‑tête d’e‑mail peut être spécifié en utilisant la classe MailMessage. Les types d’en‑têtes courants sont définis dans la classe HeaderType. C’est une classe scellée fonctionnant comme une énumération normale.
Normalement, un en‑tête d’e‑mail contient ces champs :
- To : Les adresses des destinataires peuvent être spécifiées dans le champ To. Ces destinataires constituent le public principal du message. Il peut y avoir plus d’une adresse de destinataire.
- From : Ce champ indique l’adresse e‑mail de l’expéditeur du message.
- Cc : Permet aux utilisateurs d’envoyer un message en « Carbon Copy » ou « Courtesy Copy ». Le destinataire n’est pas censé répondre ou agir. Typiquement, le personnel de supervision est notifié avec le CC.
- Bcc : Signifie Blind Carbon Copy (copie carbone invisible), se réfère à la pratique d’envoyer un message à plusieurs destinataires de façon que la liste complète des destinataires ne soit pas visible. Il s’agit d’une notification cachée.
- ReplyTo : Ce champ d’en‑tête indique où l’expéditeur souhaite que les réponses soient envoyées.
- Subject : Titre, en‑tête, sujet. Souvent utilisé comme indicateur de fil de discussion pour les réponses ou commentaires à d’autres messages.
- Date : Cet en‑tête spécifie une date (et une heure). Normalement, c’est la date à laquelle le message a été rédigé et envoyé.
- XMailer : Informations sur le logiciel client de l’expéditeur. Exemple : X-Mailer : Aspose.Email. XMailer est utilisé par les clients de messagerie. Différents clients de messagerie auront des valeurs XMailer différentes. La valeur XMailer de MS Outlook est Microsoft Office Outlook, Build 11.0.5510. Elle est ignorée par le récepteur ou le lecteur d’e‑mail.
Normalement, un en‑tête d’e‑mail ressemble à ceci :
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
Pour personnaliser un en‑tête d’e‑mail, suivez ces étapes :
- Créez une instance de la MailMessage classe.
- Spécifier To, From, CC, Bcc, ReplyTo, Subject, Date & XMailer en utilisant une instance du MailMessage.
- Créez une instance de la MimeHeader classe et spécifiez l’en‑tête secret.
- Ajouter l’en‑tête secret au MailMessage instance.
Le fragment de code suivant montre comment définir les en‑têtes d’e‑mail.
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")
Le fragment de code ci‑dessus produit un en‑tête d’e‑mail au format suivant. Cela peut être observé en ouvrant le fichier résultant "MsgHeaders.msg" dans Microsoft Outlook puis en visualisant les propriétés.
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
Insérer un en‑tête à un emplacement spécifique
Le Add méthode de HeadersCollection classe insère l’en‑tête à la fin de la collection. Cependant, il peut parfois être nécessaire d’insérer un en‑tête à un emplacement spécifique. Dans ce cas, le Add la méthode ne sera d’aucune aide. Pour y parvenir, utilisez le Insert méthode du HeadersCollection. Si la collection contient des en‑têtes portant le même nom, cet en‑tête sera inséré avant les autres en‑têtes du même nom.
Le fragment de code suivant montre comment insérer un en‑tête à un emplacement spécifique.
# Insert a header into the MailMessage instance
message.headers.insert("Received", "Value")
Ajout d’en‑têtes personnalisés à l’e‑mail
L’exemple de programmation ci‑dessous montre comment spécifier un en‑tête personnalisé dans un message e‑mail en utilisant le MailMessage classe.
# Add a header into the MailMessage instance
message.headers.add("secret-header", "mystery")
Le fragment de code ci‑dessus produit un en‑tête d’e‑mail au format suivant :
secret-header: mystery