{"id":17565,"date":"2026-08-17T15:25:50","date_gmt":"2026-08-17T15:25:50","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/"},"modified":"2026-08-28T08:23:55","modified_gmt":"2026-08-28T08:23:55","slug":"creer-des-flux-de-travail-api-pour-les-emails-transactionnels","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/","title":{"rendered":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Avez-vous re\u00e7u un email de notification instantan\u00e9e lorsque vous avez achet\u00e9 quelque chose en ligne ? C\u2019est essentiellement ce qu\u2019est un <a href=\"https:\/\/www.mailgun.com\/blog\/email\/what-is-transactional-email-basics\/\">message transactionnel<\/a> est. Les messages transactionnels sont des emails ou des notifications automatis\u00e9s que vous recevez lorsque vous vous inscrivez \u00e0 un service, effectuez un achat ou r\u00e9initialisez un mot de passe. Ils incluent \u00e9galement les alertes de fraude, les rappels de panier abandonn\u00e9, ainsi que les mises \u00e0 jour de livraison et bancaires. Contrairement aux emails de marketing, ils confirment des actions et vous tiennent inform\u00e9, renfor\u00e7ant la confiance et am\u00e9liorant l&rsquo;engagement des utilisateurs.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet article, vous apprendrez comment automatiser les messages transactionnels depuis votre application en utilisant des flux de travail d&rsquo;API pour am\u00e9liorer l&rsquo;exp\u00e9rience client.\u00a0<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-1646\"><p class=\"h5 m-0\" id=\"toc-title-1646\">Table des mati\u00e8res<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#pourquoi-lemail-transactionnel-est-il-important-pour-lexperience-client\">Pourquoi l&#8217;email transactionnel est-il important pour l&rsquo;exp\u00e9rience client ?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#comment-creer-un-flux-de-travail-dapi-pour-automatiser-lemail-transactionnel\">Comment cr\u00e9er un flux de travail d&rsquo;API pour automatiser l&#8217;email transactionnel ?<\/a><a class=\"scrollme link-body-color\" href=\"#configurer-un-nouveau-projet-python\">Configurer un nouveau projet Python<\/a><a class=\"scrollme link-body-color\" href=\"#obtenir-une-cle-api\">Obtenir une cl\u00e9 API<\/a><a class=\"scrollme link-body-color\" href=\"#importer-les-modules-et-initialiser\">Importer les modules et initialiser<\/a><a class=\"scrollme link-body-color\" href=\"#envoyer-un-email-a-laide-de-lapi-de-mailgun\">Envoyer un email \u00e0 l&rsquo;aide de l&rsquo;API de Mailgun<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#bonne-pratique-automatiser-les-emails-dinscription-de-compte\">Bonne pratique : Automatiser les emails d&rsquo;inscription de compte<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#bonne-pratique-automatiser-les-emails-de-confirmation-de-double-opt-in\">Bonne pratique : Automatiser les emails de confirmation de double opt-in<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#bonne-pratique-automatiser-les-emails-de-reinitialisation-de-mot-de-passe\">Bonne pratique : Automatiser les emails de r\u00e9initialisation de mot de passe<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#et-apres-avoir-deploye-ces-flux-de-travail\">Et apr\u00e8s avoir d\u00e9ploy\u00e9 ces flux de travail ?<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Pourquoi l&#8217;email transactionnel est-il important pour l&rsquo;exp\u00e9rience client ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contrairement aux envois en masse <a href=\"https:\/\/www.mailgun.com\/blog\/deliverability\/transactional-emails-vs-marketing-emails\/\" target=\"_tabs\" rel=\"noopener noreferrer\">emails de marketing<\/a>, les messages transactionnels sont personnalis\u00e9s, opportuns et attendus car ils sont tr\u00e8s pertinents pour l&rsquo;activit\u00e9 de l&rsquo;utilisateur. Ces messages sont individuels et contiennent des informations directement li\u00e9es aux activit\u00e9s de l&rsquo;utilisateur. <\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Le saviez-vous ? 74 % des consommateurs pr\u00e9f\u00e8rent recevoir les messages transactionnels par email, et 71 % v\u00e9rifieraient m\u00eame leur dossier spam s&rsquo;ils ne les recevaient pas.<a href=\"https:\/\/www.mailgun.com\/fr\/ressources\/etudes\/email-experience-client\/\"> Apprenez-en plus dans notre rapport sur l&#8217;email et l&rsquo;exp\u00e9rience client.<\/a>\u00a0\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Les messages transactionnels opportuns \u2013 comme les confirmations de commande et les alertes de compte \u2013 <a href=\"https:\/\/www.mailgun.com\/fr\/blog\/email\/email-transactionnel-heros-meconnu\/\" target=\"_tabs\" rel=\"noopener noreferrer\">am\u00e9liorer la satisfaction des clients<\/a>, am\u00e9liorent la transparence et renforcent la confiance en traitant efficacement les interactions avec les clients et la fraude potentielle. Ils aident \u00e9galement les clients en offrant des options de libre-service et en r\u00e9duisant la charge pesant sur le support client. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> Contrairement aux emails promotionnels qui passent souvent inaper\u00e7us, les emails transactionnels sont tr\u00e8s attendus et souvent ouverts instantan\u00e9ment ; les utilisateurs iront m\u00eame jusqu&rsquo;\u00e0 mener une chasse au tr\u00e9sor dans leurs dossiers spam pour les retrouver. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Comment cr\u00e9er un flux de travail d&rsquo;API pour automatiser l&#8217;email transactionnel ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce tutoriel, vous apprendrez comment envoyer des emails transactionnels depuis votre application en configurant des flux de travail simples avec <a href=\"https:\/\/www.mailgun.com\/fr\/\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>les API de Mailgun<\/u><\/a>. Mailgun est une plateforme d&rsquo;envoi d&#8217;emails qui vous permet d&rsquo;envoyer et de suivre des emails. Elle simplifie l&rsquo;automatisation des emails transactionnels gr\u00e2ce \u00e0 des API fiables et faciles \u00e0 utiliser.\u00a0\u00a0Vous utiliserez Mailgun pour automatiser les messages transactionnels avec Python dans les sc\u00e9narios suivants :\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Inscription de compte utilisateur\u00a0<\/li>\n\n\n\n<li>Double opt-in pour les abonnements \u00e0 la newsletter\u00a0<\/li>\n\n\n\n<li>R\u00e9initialisation de mot de passe\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de commencer, assurez-vous de disposer de ce qui suit :\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.python.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>Python<\/u><\/a> 3.9 ou version ult\u00e9rieure\u00a0<\/li>\n\n\n\n<li>Un compte Mailgun (l&rsquo; <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>essai gratuit de 30 jours<\/u><\/a> est suffisant pour ce tutoriel)\u00a0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configurer un nouveau projet Python<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour commencer, cr\u00e9ez un r\u00e9pertoire pour votre projet Python et ajoutez-y un fichier .env vide.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de continuer, c&rsquo;est une bonne pratique de cr\u00e9er et d&rsquo;activer un nouveau <a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>environnement virtuel<\/u><\/a> pour isoler votre projet et \u00e9viter les conflits de d\u00e9pendances.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois votre environnement virtuel actif, installez les biblioth\u00e8ques n\u00e9cessaires (requests et python-dotenv) en ex\u00e9cutant la commande suivante :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\npip install requests python-dotenv \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La biblioth\u00e8que requests vous permet d&rsquo;effectuer des appels d&rsquo;API, et python-dotenv vous aide \u00e0 stocker en toute s\u00e9curit\u00e9 votre cl\u00e9 API en dehors de votre code.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Obtenir une cl\u00e9 API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour effectuer des appels d&rsquo;API vers Mailgun, vous avez besoin d&rsquo;une <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/203380100-Where-can-I-find-my-API-keys-and-SMTP-credentials\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>cl\u00e9 API<\/u><\/a> depuis votre compte Mailgun.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Connectez-vous \u00e0 votre compte Mailgun et acc\u00e9dez \u00e0 la page  <a href=\"https:\/\/app.mailgun.com\/settings\/api_security\" target=\"_tabs\" rel=\"noopener noreferrer\"><b><u>S\u00e9curit\u00e9 de l&rsquo;API<\/u><\/b><\/a> . Vous pouvez trouver cela dans le menu d\u00e9roulant sous votre nom dans le coin sup\u00e9rieur droit :\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cr\u00e9ez une cl\u00e9 API puis copiez-la :\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stockez-la en toute s\u00e9curit\u00e9 en collant la cl\u00e9 dans le fichier .env de votre projet :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\nMAILGUN_API_KEY=&quot;Your API Key Here&quot; \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque vous utilisez Mailgun, prenez note de vos <b>domaines d&rsquo;envoi<\/b> sur le <a href=\"https:\/\/app.mailgun.com\/mg\/dashboard\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>tableau de bord<\/u><\/a> :\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si vous avez un abonnement gratuit, vous verrez un domaine sandbox, que vous utiliserez dans le point de terminaison de l&rsquo;API et comme adresse email \u00ab d&rsquo;exp\u00e9dition \u00bb lors de l&rsquo;envoi d&#8217;emails via les API de Mailgun. Le domaine sandbox ressemble g\u00e9n\u00e9ralement \u00e0 ceci : <code>.mailgun.org<\/code>.<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Si vous souhaitez envoyer des emails en utilisant un domaine personnalis\u00e9, vous devrez mettre \u00e0 niveau vers un abonnement payant. L&rsquo;abonnement gratuit vous limite au domaine sandbox et permet d&rsquo;envoyer des emails \u00e0 un maximum de cinq adresses v\u00e9rifi\u00e9es, ce qui est utile pour les tests et le d\u00e9veloppement lors de l&rsquo;int\u00e9gration de l&rsquo;API de Mailgun \u00e0 votre syst\u00e8me. Vous pouvez ajouter ces adresses emails aux <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\"><b>Destinataires autoris\u00e9s<\/b><\/a> dans les param\u00e8tres du compte.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h3 class=\"wp-block-heading\">Importer les modules et initialiser<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Pour automatiser les emails transactionnels, commencez par cr\u00e9er un fichier main.py dans le r\u00e9pertoire de votre projet et ajoutez le code suivant :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\nimport requests \r\n\r\nimport logging \r\n\r\nimport os \r\n\r\nfrom dotenv import load_dotenv \r\n\r\nlogging.basicConfig(level=logging.INFO)\u202f # Set log level \r\n\r\nload_dotenv()\u202f # For reading the API key from the `.env` file \r\n\r\n# Sandbox API URL format: https:\/\/api.mailgun.net\/v3\/sandbox.mailgun.org\/messages \r\n\r\nMAILGUN_API_URL = &quot;https:\/\/api.mailgun.net\/v3\/YOUR_DOMAIN_NAME\/messages&quot; \r\n\r\nFROM_EMAIL_ADDRESS = &quot;Sender Name &quot; \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La <code>fonction load_dotenv()<\/code>, de la biblioth\u00e8que <code>python-dotenv <\/code>, charge les variables d&rsquo;environnement depuis votre fichier .env dans votre code Python. C&rsquo;est une bonne pratique pour stocker et acc\u00e9der en toute s\u00e9curit\u00e9 \u00e0 des informations sensibles telles que les identifiants et les cl\u00e9s API.\u00a0\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MAILGUN_API_URL d\u00e9finit l&rsquo;URL de l&rsquo;API pour votre script Python, tandis que FROM_EMAIL_ADDRESS sp\u00e9cifie l&rsquo;adresse email de l&rsquo;exp\u00e9diteur (les deux doivent utiliser votre domaine d&rsquo;envoi d&#8217;emails ou le domaine sandbox mentionn\u00e9 pr\u00e9c\u00e9demment).\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Envoyer un email \u00e0 l&rsquo;aide de l&rsquo;API de Mailgun<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le code suivant vous montre comment envoyer un email \u00e0 une seule adresse \u00e0 l&rsquo;aide de l&rsquo;API de Mailgun. Vous devez ajouter ce code au fichier main.py que vous avez cr\u00e9\u00e9 pr\u00e9c\u00e9demment, en dessous de l&rsquo;initialisation :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    \r\n```python \r\ndef _send_email(to_address: str, subject: str, message: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSend single email to the given email address using Mailgun API. \r\n\r\n\u202f\u202f\u202f\u202f:param to_address: \r\n\r\n\u202f\u202f\u202f\u202f:param subject: \r\n\r\n\u202f\u202f\u202f\u202f:param message: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202ftry: \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fapi_key = os.getenv(&quot;MAILGUN_API_KEY&quot;)\u202f # Get API key from the `.env` file \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fresp = requests.post(MAILGUN_API_URL, auth=(&quot;api&quot;, api_key), \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fdata={&quot;from&quot;: FROM_EMAIL_ADDRESS, \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f&quot;to&quot;: to_address, &quot;subject&quot;: subject, &quot;html&quot;: message}) \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fif resp.status_code == 200:\u202f # Success \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.info(f&quot;Successfully sent an email to &#039;{to_address}&#039; via Mailgun API.&quot;) \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202felse: \u202f # Error \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.error(f&quot;Could not send the email, reason: {resp.text}&quot;) \r\n\r\n\u202f\u202f\u202f\u202fexcept Exception as ex: \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.exception(f&quot;Mailgun error: {ex}&quot;) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La fonction <code>_send_email()<\/code> prend trois arguments : <code>to_address<\/code>, <code>subject<\/code>, et <code>message<\/code>. <code>to_address<\/code> est l&#8217;email du destinataire, tandis que subject et message d\u00e9finissent respectivement l&rsquo;objet et le contenu de l&#8217;email. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La fonction lit la cl\u00e9 API de Mailgun depuis le fichier .env, qui est ensuite utilis\u00e9e pour authentifier l&rsquo;appel d&rsquo;API vers la MAILGUN_API_URL sp\u00e9cifi\u00e9e. Cette cl\u00e9 identifie votre compte de mani\u00e8re unique, permettant \u00e0 Mailgun de v\u00e9rifier votre requ\u00eate. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour garantir que l&#8217;email est envoy\u00e9 correctement, vous devez utiliser votre cl\u00e9 API unique ; l&rsquo;adresse email \u00ab d&rsquo;exp\u00e9dition \u00bb doit \u00eatre associ\u00e9e \u00e0 votre domaine valide ou au domaine sandbox de Mailgun. Sinon, l&rsquo;appel d&rsquo;API \u00e9chouera et renverra une erreur. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les donn\u00e9es de l&#8217;email sont envoy\u00e9es en utilisant la m\u00e9thode HTTP POST via l&rsquo;appel requests.post(). Si l&rsquo;appel d&rsquo;API r\u00e9ussit, l&#8217;email est mis en file d&rsquo;attente pour la livraison, et l&rsquo;API renvoie un statut HTTP 200 OK. Si une erreur se produit, l&rsquo;API fournit un message d&rsquo;erreur ainsi qu&rsquo;un code d&rsquo;\u00e9tat HTTP appropri\u00e9. Les deux sc\u00e9narios sont consign\u00e9s par cette fonction pour votre r\u00e9f\u00e9rence. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toutes les automatisations des emails transactionnels dans les sections suivantes s&rsquo;appuient sur la fonction <code>_send_email() <\/code> pour envoyer des emails via l&rsquo;API de Mailgun. <\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> L&rsquo;appel \u00e0 l&rsquo;API de Mailgun est renvoy\u00e9 imm\u00e9diatement apr\u00e8s la r\u00e9ception de votre requ\u00eate HTTP, indiquant que l&#8217;email a \u00e9t\u00e9 mis en file d&rsquo;attente pour la livraison.\u00a0<\/div><div class=\"content-body mt-3\">Avec cette configuration, vous \u00eates maintenant pr\u00eat \u00e0 automatiser vos emails transactionnels pour divers sc\u00e9narios.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Bonne pratique : Automatiser les emails d&rsquo;inscription de compte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;inscription de compte utilisateur est l&rsquo;un des cas d&rsquo;utilisation les plus importants pour les emails transactionnels, car elle sert de point d&rsquo;entr\u00e9e de l&rsquo;utilisateur dans votre syst\u00e8me. La premi\u00e8re impression compte, et cette interaction initiale est une opportunit\u00e9 de renforcer la confiance et d&rsquo;\u00e9tablir une relation positive avec l&rsquo;utilisateur. Un email de f\u00e9licitations bien opportun lors de l&rsquo;inscription confirme non seulement le succ\u00e8s du processus, mais rassure \u00e9galement l&rsquo;utilisateur quant au fait que son compte est pr\u00eat \u00e0 \u00eatre utilis\u00e9.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour ce faire, votre syst\u00e8me doit envoyer imm\u00e9diatement un email de confirmation automatis\u00e9 pour faire savoir \u00e0 l&rsquo;utilisateur que son inscription a r\u00e9ussi.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple de la fa\u00e7on de mettre cela en \u0153uvre :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_registration(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fNotify user on successful registration using `_send_email` \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here, with an appropriate link \r\n\r\n\u202f\u202f\u202f\u202fregistration_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; You have successfully registered on our site.&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Registration successful&quot;, registration_msg) \r\n\r\ndef register_user(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fRegister the user and notify the user on successful registration. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Actual code to register the user \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending registration email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_registration(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re fonction, <code>_notify_registration()<\/code>, est responsable de l&rsquo;envoi d&rsquo;une notification par email \u00e0 un utilisateur qui vient de s&rsquo;inscrire. Elle prend deux param\u00e8tres : user_name et user_email. \u00c0 l&rsquo;int\u00e9rieur de cette fonction, un simple message HTML est construit en utilisant une <a href=\"https:\/\/docs.python.org\/3\/tutorial\/inputoutput.html#formatted-string-literals\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>f-string<\/u><\/a>, ce qui permet d&rsquo;ins\u00e9rer facilement le nom de l&rsquo;utilisateur dans le message. Cette fonction appelle ensuite la fonction pr\u00e9c\u00e9demment abord\u00e9e <code>_send_email()<\/code> pour envoyer l&#8217;email.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0La deuxi\u00e8me fonction stub, <code>register_user()<\/code>, sugg\u00e8re le point d&rsquo;entr\u00e9e principal pour le processus d&rsquo;inscription de l&rsquo;utilisateur dans votre syst\u00e8me. Elle prend \u00e9galement <code>user_name<\/code> et <code>user_email<\/code> comme param\u00e8tres. Dans la r\u00e9alit\u00e9, elle aurait g\u00e9n\u00e9ralement plus de param\u00e8tres ou des objets &lsquo;utilisateur&rsquo; avec plus de d\u00e9tails. Cette fonction est responsable du traitement du processus d&rsquo;inscription. Comme indiqu\u00e9 ici, elle consigne l&rsquo;envoi de l&#8217;email et appelle la fonction <code> _notify_registration()<\/code> pour initier l&#8217;email de confirmation automatis\u00e9 apr\u00e8s avoir termin\u00e9 l&rsquo;inscription de l&rsquo;utilisateur.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;inscription de l&rsquo;utilisateur agit comme un \u00e9v\u00e9nement d\u00e9clencheur pour cet email transactionnel, et vous pouvez l&rsquo;automatiser en utilisant le flux de travail d&rsquo;API illustr\u00e9 ci-dessus. C&rsquo;est \u00e9galement une excellente occasion d&rsquo;informer les utilisateurs de vos services et fonctionnalit\u00e9s cl\u00e9s.\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> L&rsquo;API de Mailgun vous permet de cr\u00e9er et de personnaliser des <a href=\"https:\/\/documentation.mailgun.com\/docs\/mailgun\/user-manual\/sending-messages\/#templates\">mod\u00e8les HTML<\/a>, vous donnant la flexibilit\u00e9 de concevoir des emails transactionnels visuellement attrayants avec un contenu riche.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Bonne pratique : Automatiser les emails de confirmation de double opt-in<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un utilisateur s&rsquo;inscrit \u00e0 votre newsletter, au lieu de l&rsquo;ajouter imm\u00e9diatement \u00e0 votre liste d&rsquo;abonn\u00e9s, vous pouvez envoyer un email lui demandant de confirmer son abonnement. Ce processus, appel\u00e9 confirmation de double opt-in, est l\u00e9galement requis dans certains pays pour la conformit\u00e9 r\u00e9glementaire.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ici, l&rsquo;abonnement de l&rsquo;utilisateur agit comme d\u00e9clencheur, et vous pouvez automatiser la confirmation de double opt-in avec le code suivant :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_subscription(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fDouble opt-in confirmation for user subscription. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here, with an appropriate link \r\n\r\n\u202f\u202f\u202f\u202fsubscription_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; Please confirm your subscription to our newsletter by clicking &#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;this link: &lt;a href=&quot;https:\/\/example.com\/confirm-subscription?id=abcdef1234567xyz&quot;&gt;&#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;https:\/\/example.com\/confirm-subscription?id=abcdef1234567xyz&lt;\/a&gt;&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Confirm subscription&quot;, subscription_msg) \r\n\r\ndef subscribe_user(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSubscribe user and send opt-in confirmation message. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Code to subscribe user with pending confirmation \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending subscription confirmation email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_subscription(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re fonction, <code>_notify_subscription()<\/code>, est responsable de l&rsquo;envoi d&rsquo;un email de confirmation de double opt-in \u00e0 un utilisateur qui a demand\u00e9 \u00e0 s&rsquo;inscrire \u00e0 une newsletter. Elle prend deux param\u00e8tres : user_name et user_email. \u00c0 l&rsquo;int\u00e9rieur de cette fonction, un message HTML est construit \u00e0 l&rsquo;aide d&rsquo;une f-string, qui inclut le nom de l&rsquo;utilisateur et un lien de confirmation factice. \u00c0 nouveau, cette fonction appelle ensuite la fonction <code>_send_email()<\/code> pour envoyer l&#8217;email.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La deuxi\u00e8me fonction stub, <code>subscribe_user()<\/code>, est le point d&rsquo;entr\u00e9e principal pour le processus d&rsquo;abonnement de l&rsquo;utilisateur. Elle prend \u00e9galement user_name et user_email comme param\u00e8tres. Cette fonction traite g\u00e9n\u00e9ralement le processus d&rsquo;abonnement initial, stockant probablement les informations de l&rsquo;utilisateur avec un statut &lsquo;en attente&rsquo;. \u00c0 la fin, elle consigne l&rsquo;envoi de l&#8217;email et appelle ensuite la fonction <code>_notify_subscription()<\/code> pour cr\u00e9er et envoyer l&#8217;email de confirmation de double opt-in.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bonne pratique : Automatiser les emails de r\u00e9initialisation de mot de passe<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous \u00eates-vous d\u00e9j\u00e0 retrouv\u00e9 \u00e0 devoir vous connecter, pour r\u00e9aliser que vous avez oubli\u00e9 votre mot de passe et devoir cliquer sur le lien \u00ab mot de passe oubli\u00e9 \u00bb ? Cliquer sur ce lien d\u00e9clenche un email que vous attendez avec impatience.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voici un exemple de code qui d\u00e9montre comment automatiser ce type d&#8217;email transactionnel :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_password_reset(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSend password reset email to the user \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here \r\n\r\n\u202f\u202f\u202f\u202fregistration_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; Please use the following link to reset your password: &#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;&lt;a href=&quot;https:\/\/example.com\/password-reset?token=lmnopqr7654321abc&quot;&gt;&#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;https:\/\/example.com\/password-reset?token=lmnopqr7654321abc&lt;\/a&gt;&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Reset password&quot;, registration_msg) \r\n\r\ndef reset_user_password(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fInitiate password-reset and notify user \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Password reset code for the user \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending password reset email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_password_reset(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">La <code>fonction _notify_password_reset()<\/code> est responsable de la cr\u00e9ation et de l&rsquo;envoi d&rsquo;un email de r\u00e9initialisation de mot de passe \u00e0 l&rsquo;utilisateur. Elle prend le nom et l&rsquo;adresse email de l&rsquo;utilisateur comme entr\u00e9es. \u00c0 l&rsquo;int\u00e9rieur de la fonction, un message HTML est cr\u00e9\u00e9 \u00e0 l&rsquo;aide d&rsquo;une f-string, qui inclut le nom de l&rsquo;utilisateur et une URL de r\u00e9initialisation de mot de passe unique. La fonction utilise ensuite la fonction <code>_send_email()<\/code> pour livrer ce message dans la bo\u00eete de r\u00e9ception de l&rsquo;utilisateur.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La fonction <code>reset_user_password()<\/code> travaille \u00e0 ses c\u00f4t\u00e9s comme point de d\u00e9part lorsqu&rsquo;un utilisateur souhaite r\u00e9initialiser son mot de passe. Elle n\u00e9cessite \u00e9galement le nom et l&#8217;email de l&rsquo;utilisateur comme entr\u00e9es. Cette fonction ferait normalement un travail en coulisses pour configurer la r\u00e9initialisation de mot de passe (non illustr\u00e9 dans ce code). Elle consigne ensuite l&rsquo;envoi de l&#8217;email et appelle <code>_notify_password_reset()<\/code> pour envoyer les instructions de r\u00e9initialisation.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout comme les deux cas d&rsquo;utilisation pr\u00e9c\u00e9dents, cette paire de fonctions d\u00e9montre une approche modulaire pour g\u00e9rer les r\u00e9initialisations de mots de passe. En gardant les processus de notification et de d\u00e9clenchement s\u00e9par\u00e9s, cette conception rend le syst\u00e8me plus facile \u00e0 maintenir et permet de futures am\u00e9liorations au flux de travail de r\u00e9initialisation de mot de passe.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez appeler ces fonctions depuis la fonction principale pour d\u00e9monstration, comme ceci :\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\n# Demo of automated transactional emails \r\n\r\nif __name__ == &quot;__main__&quot;: \r\n\r\n\u202f\u202f\u202f\u202fregister_user(&quot;Kirstin&quot;,\u202f &quot;Kirstin &quot;) \r\n\r\n\u202f\u202f\u202f\u202fsubscribe_user(&quot;Jakkie&quot;,\u202f &quot;Jakkie &quot;) \r\n\r\n\u202f\u202f\u202f\u202freset_user_password(&quot;Manish&quot;,\u202f &quot;Manish &quot;) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Ces trois exemples montrent comment automatiser les emails transactionnels au sein de votre syst\u00e8me. Chacun suit un mod\u00e8le similaire :\u00a0<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Une fonction sp\u00e9cifique est cr\u00e9\u00e9e pour un type particulier de notification (inscription, abonnement ou r\u00e9initialisation de mot de passe), qui est d\u00e9clench\u00e9e par l&rsquo;\u00e9v\u00e9nement ou le flux de travail correspondant.\u00a0<\/li>\n\n\n\n<li>La fonction pr\u00e9pare un message d&#8217;email pertinent.\u00a0<\/li>\n\n\n\n<li>Une fonction utilitaire distincte (utilisant l&rsquo;API de Mailgun) est appel\u00e9e pour envoyer r\u00e9ellement l&#8217;email.\u00a0<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Cette approche garantit que les emails transactionnels sont envoy\u00e9s automatiquement \u00e0 des moments cl\u00e9s, par exemple lorsqu&rsquo;un utilisateur s&rsquo;enregistre, s&rsquo;inscrit, ou demande \u00e0 r\u00e9initialiser un mot de passe.\u00a0\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Vous pouvez trouver tout le code de ce tutoriel dans <a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/tree\/master\/python\/mailgun-transactional-emails\">ce d\u00e9p\u00f4t GitHub<\/a>. Pour encore plus d&rsquo;informations, consultez <a href=\"https:\/\/www.mailgun.com\/blog\/email\/the-benefits-of-email-automation\/\">les huit avantages de l&rsquo;automatisation des emails pour am\u00e9liorer votre exp\u00e9rience client.<\/a>\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Et apr\u00e8s avoir d\u00e9ploy\u00e9 ces flux de travail ?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cet article, nous avons d\u00e9taill\u00e9 la puissance des emails transactionnels dans la communication avec l&rsquo;utilisateur. Contrairement aux emails de marketing, ces messages sont d\u00e9clench\u00e9s par des actions sp\u00e9cifiques \u2014 comme un achat ou une r\u00e9initialisation de mot de passe \u2014 et fournissent des informations cruciales et urgentes qui maintiennent les utilisateurs engag\u00e9s et inform\u00e9s.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons \u00e9galement couvert la fa\u00e7on d&rsquo;automatiser ces emails en utilisant des flux de travail d&rsquo;API, en vous guidant dans la configuration de fonctions pour des choses comme les emails de bienvenue, les confirmations d&rsquo;abonnement et les r\u00e9initialisations de mots de passe. Cette automatisation garantit que vos emails arrivent dans les bo\u00eetes de r\u00e9ception au moment pr\u00e9cis o\u00f9 vos utilisateurs en ont besoin.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00eat \u00e0 rationaliser vos emails transactionnels ? Avec les API robustes et les outils de suivi de Mailgun, vous pouvez facilement automatiser les messages et am\u00e9liorer l&rsquo;exp\u00e9rience utilisateur du d\u00e9but \u00e0 la fin, mais ne nous croyez pas sur parole, v\u00e9rifiez-le par vous-m\u00eame.\u00a0<\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_85e621ae70a9ce84b78913ec8f664bc0\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                S&rsquo;inscrire            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_85e621ae70a9ce84b78913ec8f664bc0\">\r\n                Lancez-vous, c&rsquo;est facile ! Et c&rsquo;est gratuit.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">D\u00e9couvrez ce que vous pouvez accomplir avec la meilleure plateforme de livraison d\u2019emails au monde.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Tenez vos clients inform\u00e9s avec des emails transactionnels qui renforcent la confiance. D\u00e9couvrez comment dynamiser l&rsquo;automatisation des emails avec les flux de travail API de Mailgun pour une exp\u00e9rience client fluide.\u00a0<\/p>\n","protected":false},"author":11,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[19],"class_list":["post-17565","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l&#039;API, gestion des erreurs et code Python pour les flux de travail d&#039;inscription, d&#039;opt-in et de r\u00e9initialisation de mot de passe.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l&#039;API, gestion des erreurs et code Python pour les flux de travail d&#039;inscription, d&#039;opt-in et de r\u00e9initialisation de mot de passe.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-28T08:23:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/\",\"name\":\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2026-08-17T15:25:50+00:00\",\"dateModified\":\"2026-08-28T08:23:55+00:00\",\"description\":\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l'API, gestion des erreurs et code Python pour les flux de travail d'inscription, d'opt-in et de r\u00e9initialisation de mot de passe.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/dev-life\\\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun","description":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l'API, gestion des erreurs et code Python pour les flux de travail d'inscription, d'opt-in et de r\u00e9initialisation de mot de passe.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/","og_locale":"fr_FR","og_type":"article","og_title":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun","og_description":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l'API, gestion des erreurs et code Python pour les flux de travail d'inscription, d'opt-in et de r\u00e9initialisation de mot de passe.","og_url":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-08-28T08:23:55+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/","url":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/","name":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs, avec exemples de code - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2026-08-17T15:25:50+00:00","dateModified":"2026-08-28T08:23:55+00:00","description":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs : configuration s\u00e9curis\u00e9e de l'API, gestion des erreurs et code Python pour les flux de travail d'inscription, d'opt-in et de r\u00e9initialisation de mot de passe.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/blog\/dev-life\/creer-des-flux-de-travail-api-pour-les-emails-transactionnels\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/fr\/blog\/"},{"@type":"ListItem","position":3,"name":"Bonnes pratiques des emails transactionnels pour les d\u00e9veloppeurs"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/fr\/#website","url":"https:\/\/www.mailgun.com\/fr\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !","publisher":{"@id":"https:\/\/www.mailgun.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/fr\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/17565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"version-history":[{"count":3,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/17565\/revisions"}],"predecessor-version":[{"id":17584,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/17565\/revisions\/17584"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=17565"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog_category?post=17565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}