{"id":20001,"date":"2026-09-14T21:17:50","date_gmt":"2026-09-14T21:17:50","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/"},"modified":"2026-09-14T21:17:50","modified_gmt":"2026-09-14T21:17:50","slug":"comment-envoyer-email-transactionnel-application-nodejs-api-mailgun","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/","title":{"rendered":"Comment envoyer un email transactionnel dans une application NodeJS en utilisant l&rsquo;API de Mailgun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Non seulement vous pouvez obtenir un r\u00e9-engagement puissant bas\u00e9 sur des d\u00e9clencheurs, des actions et des mod\u00e8les, mais vous pouvez \u00e9galement communiquer des informations importantes <strong><em>automatiquement<\/em><\/strong> entre votre plateforme et un client.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est fort probable que vous ayez \u00e0 envoyer des emails transactionnels automatis\u00e9s au cours de votre carri\u00e8re, si ce n&rsquo;est pas d\u00e9j\u00e0 fait, tels que\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Emails de confirmation<\/li>\n\n\n\n<li>Rappels de mot de passe<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2026 et bien d&rsquo;autres types de notifications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce tutoriel, nous allons apprendre <strong>comment envoyer des emails transactionnels en utilisant l&rsquo;API de Mailgun et une biblioth\u00e8que d&rsquo;aide NodeJS<\/strong>. <\/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-2148\"><p class=\"h5 m-0\" id=\"toc-title-2148\">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=\"#nous-aborderons-differents-scenarios\">Nous aborderons diff\u00e9rents sc\u00e9narios\u00a0:<\/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=\"#envoyer-des-emails-smtp-vs-api\">Envoyer des emails\u00a0: SMTP vs API\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#premiers-pas-avec-votre-application-node-js\">Premiers pas avec votre application Node.js<\/a><a class=\"scrollme link-body-color\" href=\"#etape-1-initialisation-du-projet\">\u00c9tape 1\u00a0: initialisation du projet<\/a><a class=\"scrollme link-body-color\" href=\"#etape-2-configurer-une-application-expressjs-simple\">\u00c9tape 2\u00a0: configurer une application ExpressJS simple<\/a><a class=\"scrollme link-body-color\" href=\"#etape-3-creer-les-fichiers-de-vue-et-javascript\">\u00c9tape 3\u00a0: cr\u00e9er les fichiers de vue et JavaScript\u00a0:<\/a><a class=\"scrollme link-body-color\" href=\"#etape-4-executer-lapplication\">\u00c9tape 4\u00a0: ex\u00e9cuter l&rsquo;application<\/a><a class=\"scrollme link-body-color\" href=\"#comprendre-le-fonctionnement-de-lapplication\">Comprendre le fonctionnement de l&rsquo;application<\/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=\"#exemples-pratiques-envoyer-des-emails-avec-lapi-node-js-de-mailgun\">Exemples pratiques\u00a0: envoyer des emails avec l&rsquo;API Node.js de Mailgun\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#envoyer-un-seul-email-transactionnel\">Envoyer un seul email transactionnel\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#ajouter-des-adresses-email-a-une-liste\">Ajouter des adresses email \u00e0 une liste\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#envoyer-une-facture-avec-une-piece-jointe\">Envoyer une facture avec une pi\u00e8ce jointe\u00a0<\/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=\"#finaliser-votre-expediteur-demails-node-js\">Finaliser votre exp\u00e9diteur d&#8217;emails Node.js<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Nous aborderons diff\u00e9rents sc\u00e9narios\u00a0:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Envoyer un seul email transactionnel<\/li>\n\n\n\n<li>Envoyer une newsletter \u00e0 une liste de contacts<\/li>\n\n\n\n<li>Ajouter des adresses email \u00e0 une liste<\/li>\n\n\n\n<li>Envoyer une facture \u00e0 une seule adresse email<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Envoyer des emails\u00a0: SMTP vs API\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lors de l&rsquo;envoi d&#8217;emails depuis une application Node.js, vous pouvez utiliser un client SMTP direct ou une API d&#8217;email. Traditionnellement, l&rsquo;\u00e9quipe de d\u00e9veloppement utilisait une biblioth\u00e8que comme Nodemailer pour configurer une connexion directe \u00e0 un serveur SMTP. Bien que le SMTP vous donne du contr\u00f4le, il s&rsquo;accompagne de plusieurs inconv\u00e9nients, tels qu&rsquo;une configuration complexe et une mauvaise d\u00e9livrabilit\u00e9.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;approche par API, comme celle utilis\u00e9e par Mailgun, simplifie l&rsquo;ensemble du processus. Au lieu de g\u00e9rer le protocole sous-jacent, vous effectuez une simple requ\u00eate HTTP. L&rsquo;infrastructure robuste de Mailgun g\u00e8re la communication SMTP pour vous, offrant une meilleure d\u00e9livrabilit\u00e9 et des fonctionnalit\u00e9s int\u00e9gr\u00e9es telles que les statistiques et la validation des emails.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Premiers pas avec votre application Node.js<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cette section vous guidera dans la configuration de votre projet et l&rsquo;ex\u00e9cution de votre application.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c9tape 1\u00a0: initialisation du projet<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nous supposons que vous avez install\u00e9 et savez comment utiliser l&rsquo;environnement NodeJS.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La premi\u00e8re chose que nous allons faire est de g\u00e9n\u00e9rer un fichier <code>package.json<\/code> dans un nouveau r\u00e9pertoire (<code>\/mailgun_nodetut<\/code>, dans mon cas). Ce fichier contient des d\u00e9tails <strong>tels que le nom du projet et les d\u00e9pendances requises<\/strong>.\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                                PHP                            <\/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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    {\r\n  &quot;name&quot;: &quot;mailgun-node-tutorial&quot;,\r\n  &quot;version&quot;: &quot;0.0.1&quot;,\r\n  &quot;private&quot;: true,\r\n  &quot;scripts&quot;: {\r\n    &quot;start&quot;: &quot;node app.js&quot;\r\n  },\r\n  &quot;dependencies&quot;: {\r\n    &quot;express&quot;: &quot;4&quot;,\r\n    &quot;jade&quot;: &quot;*&quot;,\r\n    &quot;mailgun-js&quot;: &quot;0.5&quot;\r\n  }\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\">Comme vous pouvez le voir, nous allons utiliser <code>expressjs<\/code> pour la structure de notre application web, avec <code>jade<\/code> comme langage de templating, et enfin, une biblioth\u00e8que pour Node contribu\u00e9e par la communaut\u00e9 par <a href=\"https:\/\/www.npmjs.org\/~bojand\" target=\"_blank\" rel=\"noreferrer noopener\">bojand<\/a>.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le m\u00eame dossier o\u00f9 vous avez cr\u00e9\u00e9 le fichier <code>package.json<\/code>, cr\u00e9ez deux dossiers suppl\u00e9mentaires\u00a0: <code>views\/ js\/\u00a0<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout est pr\u00eat, il vous suffit de vous connecter \u00e0 <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_blank\" rel=\"noreferrer noopener\">Mailgun<\/a> (c&rsquo;est gratuit si ce n&rsquo;est pas d\u00e9j\u00e0 fait), et d&rsquo;obtenir votre cl\u00e9 API sur la premi\u00e8re page du panneau de contr\u00f4le.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c9tape 2\u00a0: configurer une application ExpressJS simple<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enregistrez le code ci-dessous sous <code>app.js<\/code> dans le r\u00e9pertoire racine de votre application (o\u00f9 se trouve <code>package.json<\/code>)\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                                PHP                            <\/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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    \/\/We&#039;re using the express framework and the mailgun-js wrapper\r\nvar express = require(&#039;express&#039;);\r\nvar Mailgun = require(&#039;mailgun-js&#039;);\r\n\/\/init express\r\nvar app = express();\r\n\r\n\/\/Your api key, from Mailgun\u2019s Control Panel\r\nvar api_key = &#039;MAILGUN-API-KEY&#039;;\r\n\r\n\/\/Your domain, from the Mailgun Control Panel\r\nvar domain = &#039;YOUR-DOMAIN.com&#039;;\r\n\r\n\/\/Your sending email address\r\nvar from_who = &#039;your@email.com&#039;;\r\n\r\n\/\/Tell express to fetch files from the \/js directory\r\napp.use(express.static(__dirname + &#039;\/js&#039;));\r\n\/\/We&#039;re using the Jade templating language because it&#039;s fast and neat\r\napp.set(&#039;view engine&#039;, &#039;jade&#039;)\r\n\r\n\/\/Do something when you&#039;re landing on the first page\r\napp.get(&#039;\/&#039;, function(req, res) {\r\n\/\/render the index.jade file - input forms for humans\r\nres.render(&#039;index&#039;, function(err, html) {\r\nif (err) {\r\n\/\/ log any error to the console for debug\r\nconsole.log(err); \r\n}\r\nelse { \r\n\/\/no error, so send the html to the browser\r\nres.send(html)\r\n};\r\n});\r\n});\r\n\r\n\/\/ Send a message to the specified email address when you navigate to \/submit\/someaddr@email.com\r\n\/\/ The index redirects here\r\napp.get(&#039;\/submit\/:mail&#039;, function(req,res) {\r\n\r\n\/\/We pass the api_key and domain to the wrapper, or it won&#039;t be able to identify + send emails\r\nvar mailgun = new Mailgun({apiKey: api_key, domain: domain});\r\n\r\nvar data = {\r\n\/\/Specify email data\r\nfrom: from_who,\r\n\/\/The email to contact\r\nto: req.params.mail,\r\n\/\/Subject and text data  \r\nsubject: &#039;Hello from Mailgun&#039;,\r\nhtml: &#039;Hello, This is not a plain-text email, I wanted to test some spicy Mailgun sauce in NodeJS! &lt;a href=&quot;http:\/\/0.0.0.0:3030\/validate?&amp;apos; + req.params.mail + &amp;apos;&quot;&gt;Click here to add your email address to a mailing list&lt;\/a&gt;&#039;\r\n}\r\n\r\n\/\/Invokes the method to send emails given the above data with the helper library\r\nmailgun.messages().send(data, function (err, body) {\r\n\/\/If there is an error, render the error page\r\nif (err) {\r\nres.render(&#039;error&#039;, { error : err});\r\nconsole.log(&quot;got an error: &quot;, err);\r\n}\r\n\/\/Else we can greet    and leave\r\nelse {\r\n\/\/Here &quot;submitted.jade&quot; is the view file for this landing page \r\n\/\/We pass the variable &quot;email&quot; from the url parameter in an object rendered by Jade\r\nres.render(&#039;submitted&#039;, { email : req.params.mail });\r\nconsole.log(body);\r\n}\r\n});\r\n\r\n});\r\n\r\napp.get(&#039;\/validate\/:mail&#039;, function(req,res) {\r\nvar mailgun = new Mailgun({apiKey: api_key, domain: domain});\r\n\r\nvar members = [\r\n{\r\naddress: req.params.mail\r\n}\r\n];\r\n\/\/For the sake of this tutorial you need to create a mailing list on Mailgun.com\/cp\/lists and put its address below\r\nmailgun.lists(&#039;NAME@MAILINGLIST.COM&#039;).members().add({ members: members, subscribed: true }, function (err, body) {\r\nconsole.log(body);\r\nif (err) {\r\nres.send(&quot;Error - check console&quot;);\r\n}\r\nelse {\r\nres.send(&quot;Added to mailing list&quot;);\r\n}\r\n});\r\n\r\n})\r\n\r\napp.get(&#039;\/invoice\/:mail&#039;, function(req,res){\r\n\/\/Which file to send? I made an empty invoice.txt file in the root directory\r\n\/\/We required the path module here..to find the full path to attach the file!\r\nvar path = require(&quot;path&quot;);\r\nvar fp = path.join(__dirname, &#039;invoice.txt&#039;);\r\n\/\/Settings\r\nvar mailgun = new Mailgun({apiKey: api_key, domain: domain});\r\n\r\nvar data = {\r\nfrom: from_who,\r\nto: req.params.mail,\r\nsubject: &#039;An invoice from your friendly hackers&#039;,\r\ntext: &#039;A fake invoice should be attached, it is just an empty text file after all&#039;,\r\nattachment: fp\r\n};\r\n\r\n\/\/Sending the email with attachment109    mailgun.messages().send(data, function (error, body) {\r\nif (error) {\r\nres.render(&#039;error&#039;, {error: error});\r\n}\r\nelse {\r\nres.send(&quot;Attachment is on its way&quot;);\r\nconsole.log(&quot;attachment sent&quot;, fp);\r\n}\r\n});\r\n})\r\n\r\napp.listen(3030);\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h3 class=\"wp-block-heading\">\u00c9tape 3\u00a0: cr\u00e9er les fichiers de vue et JavaScript\u00a0:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Enregistrez le code ci-dessous sous <code>index.jade<\/code> dans le r\u00e9pertoire <code>\/views<\/code><\/em><\/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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    doctype html\r\nhtml\r\nhead\r\ntitle Mailgun Transactional demo in NodeJS\r\nbody\r\np Welcome to a Mailgun form\r\nform(id=&quot;mgform&quot;)\r\nlabel(for=&quot;mail&quot;) Email\r\ninput(type=&quot;text&quot; id=&quot;mail&quot; placeholder=&quot;Youremail@address.com&quot;)\r\nbutton(value=&quot;bulk&quot; onclick=&quot;mgform.hid=this.value&quot;) Send transactional\r\nbutton(value=&quot;list&quot; onclick=&quot;mgform.hid=this.value&quot;) Add to list\r\nbutton(value=&quot;inv&quot; onclick=&quot;mgform.hid=this.value&quot;) Send invoice\r\nscript(type=&quot;text\/javascript&quot; src=&quot;main.js&quot;)\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\"><i>Enregistrez le code ci-dessous sous\u00a0<\/i><i><code>error.jade<\/code><\/i><i>\u00a0dans le r\u00e9pertoire \/views<\/i><\/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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    doctype html\r\nhtml\r\nhead\r\ntitle Mailgun Transactional\r\nbody\r\np Well that&#039;s awkward: #{error}\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\"><i>Enregistrez le code ci-dessous sous\u00a0<\/i><i><code>main.js<\/code><\/i><i>\u00a0dans le r\u00e9pertoire \/js<\/i><\/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                                PHP                            <\/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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    var vForm = document.getElementById(&#039;mgform&#039;);\r\nvar vInput = document.getElementById(&#039;mail&#039;);\r\n\r\nvForm.onsubmit = function() {\r\nif (this.hid == &quot;bulk&quot;) {\r\nlocation = &quot;\/submit\/&quot; + encodeURIComponent(vInput.value);\r\n}\r\nif (this.hid == &quot;list&quot;) {\r\nlocation = &quot;\/validate\/&quot; + encodeURIComponent(vInput.value);\r\n}\r\nif (this.hid == &quot;inv&quot;) {\r\nlocation = &quot;\/invoice\/&quot; + encodeURIComponent(vInput.value);\r\n}\r\n\r\nreturn false;\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\">Enfin, cr\u00e9ez un fichier <code>invoice.txt<\/code> vide dans votre dossier racine. Ce fichier sera envoy\u00e9 en pi\u00e8ce jointe.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00c9tape 4\u00a0: ex\u00e9cuter l&rsquo;application<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Ex\u00e9cutez <code>npm install<\/code> (ou <code>sudo npm install<\/code> dans certains cas, selon vos m\u00e9thodes d&rsquo;installation) pour t\u00e9l\u00e9charger les d\u00e9pendances, y compris Express.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Une fois cela fait, ex\u00e9cutez <code>node app.js\u00a0<\/code><\/li>\n<\/ol>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Naviguez avec votre navigateur vers <code>localhost:3030<\/code> (ou <code>0.0.0.0:3030<\/code>)\u00a0<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Ces trois \u00e9tapes simples vous permettent de commencer \u00e0 envoyer des emails transactionnels \u00e0 la demande\u00a0!\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Comprendre le fonctionnement de l&rsquo;application<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui pr\u00e9c\u00e8de est une application express simple qui s&rsquo;ex\u00e9cutera sur votre machine locale sur le port\u00a0<code>3030<\/code>. Nous l&rsquo;avons d\u00e9finie pour utiliser expressjs et le wrapper mailgun-js. Ce sont des biblioth\u00e8ques assez connues qui nous aideront \u00e0\u00a0<b>configurer rapidement un petit site web<\/b>\u00a0qui permettra aux utilisateurs de d\u00e9clencher l&rsquo;envoi d&#8217;emails vers leur adresse.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Les points de terminaison<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nous avons d\u00e9fini quatre points de terminaison.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>\/<\/code><\/li>\n\n\n\n<li><code>\/submit\/:mail<\/code><\/li>\n\n\n\n<li><code>\/validate\/:mail<\/code><\/li>\n\n\n\n<li><code>\/invoice\/:mail<\/code><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">O\u00f9\u00a0<code>:mail<\/code>\u00a0est votre adresse email valide.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lors de la navigation vers un point de terminaison, Express enverra au navigateur une vue diff\u00e9rente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En arri\u00e8re-plan, Express prendra les donn\u00e9es fournies par le navigateur et les traitera \u00e0 l&rsquo;aide de la biblioth\u00e8que\u00a0<code>mailgun-js<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le premier cas, nous naviguerons vers la racine qui est\u00a0<code>localhost:3030\/<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez voir qu&rsquo;il y a une zone de saisie demandant votre adresse email. En faisant cela,\u00a0<b>vous vous envoyez un bel email transactionnel.<\/b><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cela s&rsquo;explique par le fait qu&rsquo;expressjs prend votre adresse email du param\u00e8tre d&rsquo;URL et, en utilisant votre cl\u00e9 API et votre domaine, effectue un appel API vers le point de terminaison pour envoyer des emails.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque point de terminaison invoquera une mise en page diff\u00e9rente, j&rsquo;ai ajout\u00e9 le code des mises en page de base ci-dessous, n&rsquo;h\u00e9sitez pas \u00e0 y ajouter ou \u00e0 en retirer des \u00e9l\u00e9ments.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemples pratiques\u00a0: envoyer des emails avec l&rsquo;API Node.js de Mailgun\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre exemple, nous avons vu comment vous pouvez envoyer un email transactionnel automatiquement lors du d\u00e9clenchement d&rsquo;une action sp\u00e9cifique.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Envoyer un seul email transactionnel\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque vous naviguez vers la racine <code>localhost:3030\/<\/code>, vous verrez une zone de saisie demandant votre adresse email. En faisant cela, vous vous envoyez un bel email transactionnel.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ajouter des adresses email \u00e0 une liste\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le point de terminaison <code>\/validate\/:mail<\/code> montre comment ajouter une adresse email \u00e0 une liste de contacts. Pour les besoins de ce tutoriel, vous devez cr\u00e9er une liste de contacts sur <code>Mailgun.com\/cp\/lists<\/code> et mettre son adresse dans le code <code>app.js<\/code>.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Envoyer une facture avec une pi\u00e8ce jointe\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le point de terminaison <code>\/invoice\/:mail<\/code> montre comment envoyer une pi\u00e8ce jointe. Nous avons requis le module path pour trouver le chemin complet afin de joindre le fichier vide <code>invoice.txt<\/code> dans votre r\u00e9pertoire racine.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Finaliser votre exp\u00e9diteur d&#8217;emails Node.js<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre exemple, nous avons vu comment vous pouvez envoyer un email transactionnel automatiquement lorsqu&rsquo;une action sp\u00e9cifique est d\u00e9clench\u00e9e, dans notre cas pr\u00e9cis, la soumission du formulaire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il y a\u00a0<b>des milliers d&rsquo;applications auxquelles vous pourriez adapter ce sc\u00e9nario<\/b>. L&rsquo;envoi d&#8217;emails peut \u00eatre utilis\u00e9 pour\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>L&rsquo;enregistrement d&rsquo;un compte sur un site et un email de message\u00a0<i>Hello\u00a0<\/i><\/li>\n\n\n\n<li>R\u00e9initialiser un mot de passe<\/li>\n\n\n\n<li>Confirmer des achats ou des actions critiques (suppression d&rsquo;un compte)<\/li>\n\n\n\n<li>L&rsquo;authentification \u00e0 deux facteurs avec plusieurs adresses email<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><b>\u00c0 quelles fins utilisez-vous des emails transactionnels dans votre activit\u00e9 quotidienne\u00a0?<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Envoyer des emails transactionnels est facile, quels que soient vos outils. Si vous utilisez une biblioth\u00e8que d&rsquo;aide NodeJS, ce tutoriel vous aidera \u00e0 configurer Mailgun.<\/p>\n","protected":false},"author":13,"featured_media":4074,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[20],"class_list":["post-20001","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-email"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l&#039;API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d&#039;envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.\" \/>\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\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l&#039;API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d&#039;envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.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=\"5 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\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/\",\"name\":\"Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"datePublished\":\"2026-09-14T21:17:50+00:00\",\"description\":\"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l'API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d'envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/email\\\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\\\/#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\":\"Comment envoyer un email transactionnel dans une application NodeJS en utilisant l\u2019API de Mailgun\"}]},{\"@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":"Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun","description":"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l'API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d'envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.","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\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun","og_description":"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l'API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d'envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.","og_url":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/","url":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/","name":"Comment envoyer des emails dans NodeJS\u00a0: exemples SMTP et API - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","datePublished":"2026-09-14T21:17:50+00:00","description":"D\u00e9couvrez comment envoyer des emails dans Node.js en utilisant l'API de Mailgun. D\u00e9couvrez des exemples de code complets sur la fa\u00e7on d'envoyer des emails transactionnels, des pi\u00e8ces jointes et bien plus encore.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/blog\/email\/comment-envoyer-email-transactionnel-application-nodejs-api-mailgun\/#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":"Comment envoyer un email transactionnel dans une application NodeJS en utilisant l\u2019API de Mailgun"}]},{"@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\/20001","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\/13"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/20001\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/4074"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=20001"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog_category?post=20001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}