MIME (Multipurpose Internet Mail Extensions) est une norme largement utilisée pour le formatage et l’échange de messages électroniques, ainsi que d’autres types de contenu sur Internet. Il permet l’inclusion de divers types de médias, tels que du texte, des images, de l’audio et de la vidéo, dans un seul message électronique. Dans cet article, nous allons explorer comment créer des messages EML par programmation en Python. À la fin de l’article, vous comprendrez clairement comment créer des messages MIME, ajouter des images au contenu HTML de l’e-mail et enregistrer l’e-mail au format EML.
- API pour créer des messages MIME en Python
- Créer un fichier EML à partir de rien
- Ajouter une image au contenu HTML
- Créer un fichier EML à partir d’un fichier HTML
- Conseils pour améliorer l’affichage du message HTML dans Outlook
API pour créer des messages MIME en Python
Pour créer un message MIME, il faut respecter les règles de formatage spécifiées par la norme MIME. Cela implique généralement l’utilisation de bibliothèques ou de modules appropriés fournis par des langages de programmation, tels que Python, pour générer la structure MIME nécessaire. Aspose.Email for Python est une bibliothèque puissante qui fournit un large éventail de fonctionnalités pour créer, manipuler et traiter les messages électroniques, ce qui permet aux développeurs d’intégrer plus facilement les tâches liées aux e-mails dans leurs projets Python. Il est conçu pour fonctionner avec différents formats et sur différentes plates-formes. Vous pouvez facilement installer l’API via PyPI ou télécharger sa DLL.
> pip install Aspose.Email-for-Python-via-NET
Créer un fichier EML à partir de rien
Pour créer un nouveau message électronique, nous allons utiliser la classe MailMessage de Aspose.Email. La classe possède toutes les méthodes et propriétés nécessaires pour spécifier un expéditeur, un destinataire, un sujet et un corps HTML. Le message est ensuite enregistré dans un fichier EML nommé “message.eml”.
Le processus de création d’un nouveau fichier eml peut être décrit dans les étapes suivantes :
- Importez les classes requises depuis le module aspose.email.
- Créez une nouvelle instance de la classe MailMessage en utilisant le constructeur par défaut.
- Définissez les propriétés de l’objet MailMessage selon vos besoins : l’adresse de l’expéditeur, l’adresse du destinataire, le sujet, le corps HTML etc.
- Définissez la structure et le contenu HTML. Dans notre exemple, une structure HTML simple est fournie avec un titre et un paragraphe.
- Enregistrez l’objet MailMessage dans un fichier EML à l’aide de la méthode save. Dans notre exemple, le nom du fichier sera “message.eml”.
L’exemple de code ci-dessous vous montrera comment créer un EML à partir de zéro par programmation :
from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions
# Créer une nouvelle instance de la classe MailMessage
eml = MailMessage()
# Définir l'expéditeur et le destinataire
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))
# Définir le sujet et le corps
eml.subject = "New message with image"
eml.html_body = """<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"""
# Enregistrez l'objet MailMessage dans un fichier EML
eml.save("message.eml", SaveOptions.default_eml)
La méthode save de la classe MailMessage prend deux paramètres : le chemin du fichier et les options de sauvegarde. Les options d’enregistrement spécifient le format du fichier de sortie.
Ajouter une image au contenu HTML
Dans cette section, nous allons intégrer une image dans l’e-mail à l’aide de la classe LinkedResource de la même API. La classe représente une ressource intégrée dans un message. Ensuite, nous enregistrerons le message dans un fichier EML nommé “messagewithimage.eml”.
Suivez simplement les étapes.
- Importez les classes requises depuis le module aspose.email.
- Créez une nouvelle instance de la classe MailMessage en utilisant le constructeur par défaut.
- Définissez les propriétés de l’objet MailMessage en fonction de vos besoins.
- Le corps HTML contient une balise d’image avec un attribut source défini sur
cid:myImage
. - La classe AlternateView est utilisée pour obtenir une autre vue du corps du message qui contient l’image intégrée.
- La classe LinkedResource est utilisée pour représenter l’image intégrée et son ID de contenu est défini sur “image1”.
- Enfin, la vue alternative est ajoutée à la collection des vues alternatives du message.
Essayez l’exemple de code suivant pour ajouter une image au contenu HTML :
from aspose.email import MailMessage, MailAddress, LinkedResource, SaveOptions
from aspose.email.mime import MediaTypeNames
# Créer une nouvelle instance de la classe MailMessage
eml = MailMessage()
# Définir l'expéditeur et le destinataire
eml.from_address = MailAddress("sender@domain.com")
eml.to.append(MailAddress("receiver@receiver.com"))
# Définir le sujet et le corps
eml.subject = "New message with image"
eml.html_body = """<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
<img src='cid:myImage' />
</body>
</html>"""
# Ajouter une ressource d'image aux vues alternatives
for alternate_view in eml.alternate_views:
if alternate_view.content_type.media_type == "text/html":
image_resource = LinkedResource("image.png", "image/png")
image_resource.content_id = "myImage"
alternate_view.linked_resources.append(image_resource)
# Enregistrez le MailMessage en tant que fichier EML
eml.save("message_with_image.eml", SaveOptions.default_eml)
Créer un fichier EML à partir d’un fichier HTML
La bibliothèque Aspose.Email for Python fournit un moyen simple de charger, modifier et enregistrer un fichier HTML en tant que fichier EML. Ce processus de conversion peut être utile si vous avez un code HTML que vous souhaitez envoyer sous forme de message électronique.
Pour cela, nous allons utiliser la classe HtmlLoadOptions. La classe permet de spécifier des options supplémentaires lors du chargement de MailMessage à partir du format Html. Tout d’abord, nous devons avoir le contenu HTML. Dans notre exemple, ce sera un fichier appelé content.html
.
<!DOCTYPE html>
<html>
<head>
<title>My Email</title>
</head>
<body>
<h1>Hello,</h1>
<img src="logo.png" alt="Logo">
<p>This is my first email created form HTML.</p>
</body>
</html>
De plus, vous devez préparer à l’avance toutes les images contenant du HTML et spécifier le chemin d’accès correct vers celles-ci dans le fichier HTML.
Maintenant, nous pouvons facilement créer un MailMessage en définissant le corps HTML à partir de content.html
.
- Importez les classes requises depuis le module aspose.email.
- Créez une instance de HtmlLoadOptions pour spécifier les options de chargement de l’objet fichier HTML.
- Définissez une chaîne contenant le chemin d’accès aux images dans la propriété pathtoresources.
- Définissez la propriété shouldaddplaintextview sur True si EML doit contenir AlternateView avec du texte brut.
- Créez une nouvelle instance de MailMessage en chargeant le fichier HTML et en passant l’objet HtmlLoadOptions en tant que paramètre.
- Définissez des propriétés de message supplémentaires.
- Enfin, enregistrez l’objet MailMessage dans un fichier EML à l’aide de la méthode save.
from aspose.email import HtmlLoadOptions, MailAddress, MailMessage, SaveOptions
htmlloadOptions = HtmlLoadOptions()
htmlloadOptions.path_to_resources = path
htmlloadOptions.should_add_plain_text_view = True
eml = MailMessage.load(path + str(r"content.html"), htmlloadOptions)
# Définir l'expéditeur et le destinataire
eml.from_address = MailAddress("sender@domain.com")
eml.to = MailAddress("recipient@domain.com")
# Définir le sujet
eml.subject = "New message from HTML"
# Enregistrez le message au format EML
eml.save("message_from_html.eml", SaveOptions.default_eml)
Conseils pour améliorer l’affichage du message HTML dans Outlook
Lorsqu’il s’agit d’envoyer des e-mails HTML, la compatibilité avec différents clients de messagerie est cruciale. Outlook, en particulier, a son moteur de rendu qui diffère de la plupart des navigateurs Web, ce qui peut entraîner des problèmes de formatage. En voici quelques uns:
- Outlook peut ne pas prendre en charge certaines balises HTML et propriétés CSS couramment utilisées dans les navigateurs Web. Les éléments tels que les images d’arrière-plan, les éléments flottants, les marges et le remplissage peuvent ne pas s’afficher comme prévu. Pour surmonter cela, il est essentiel d’utiliser des styles, des tableaux ou des commentaires conditionnels en ligne pour obtenir la disposition et la mise en forme souhaitées dans Outlook.
- Outlook peut introduire des espaces ou des lignes supplémentaires entre les éléments ou même supprimer complètement certains éléments, perturbant votre conception soigneusement conçue. Pour atténuer cela, l’utilisation stratégique d’espaces insécables, d’espaces de largeur nulle ou de cellules de tableau vides peut aider à conserver la structure prévue et à empêcher la manipulation indésirable des éléments dans Outlook.
- Le moteur de rendu d’Outlook peut modifier l’encodage ou le jeu de caractères de votre fichier HTML, ce qui entraîne des caractères brouillés ou mal affichés. Pour garantir un rendu correct, spécifiez explicitement l’encodage et le jeu de caractères dans votre code HTML à l’aide d’une balise META. Cela aidera Outlook à interpréter et à afficher le texte avec précision, évitant ainsi tout problème lié aux caractères.
Conclusion
Pour résumer, rappelons quels problèmes ont été abordés dans cet article. Vous avez appris à créer des messages MIME par programme en Python à l’aide de Aspose.Email. Nos instructions détaillées et étape par étape avec des exemples de code rendent le didacticiel lisible et facile à comprendre.
En créant des messages MIME, les expéditeurs d’e-mails peuvent s’assurer que leurs communications prennent en charge un large éventail de types de contenu et offrent une expérience plus attrayante et interactive aux destinataires.
- Vous pouvez en savoir plus sur Aspose.Email for Python et l’essayer gratuitement.
- Vous pouvez également consulter plus de caractéristiques et fonctionnalités d’Aspose.Email dans la documentation .
- Vos questions sont les bienvenues sur notre forum.