{"id":20166,"date":"2026-09-14T22:07:59","date_gmt":"2026-09-14T22:07:59","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/"},"modified":"2026-09-14T22:07:59","modified_gmt":"2026-09-14T22:07:59","slug":"como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/","title":{"rendered":"Como enviar e-mail transacional em um aplicativo NodeJS usando a API do Mailgun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Voc\u00ea n\u00e3o apenas consegue um reengajamento poderoso com base em gatilhos, a\u00e7\u00f5es e padr\u00f5es, mas tamb\u00e9m pode comunicar informa\u00e7\u00f5es importantes <strong><em>automaticamente<\/em><\/strong> entre a sua plataforma e um cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 muito prov\u00e1vel que, trabalhando com desenvolvimento, voc\u00ea precise enviar e-mails transacionais automatizados, se \u00e9 que ainda n\u00e3o precisou, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>E-mails de confirma\u00e7\u00e3o<\/li>\n\n\n\n<li>Lembretes de senha<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u2026e muitos outros tipos de notifica\u00e7\u00f5es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Neste tutorial, vamos aprender <strong>como enviar e-mails transacionais usando a API do Mailgun e uma biblioteca auxiliar do 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-4332\"><p class=\"h5 m-0\" id=\"toc-title-4332\">\u00cdndice<\/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=\"#abordaremos-diferentes-cenarios\">Abordaremos diferentes cen\u00e1rios:<\/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=\"#envio-de-e-mails-smtp-vs-api\">Envio de e-mails: SMTP vs API\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#primeiros-passos-com-o-seu-aplicativo-node-js\">Primeiros passos com o seu aplicativo Node.js<\/a><a class=\"scrollme link-body-color\" href=\"#etapa-1-inicializacao-do-projeto\">Etapa 1: inicializa\u00e7\u00e3o do projeto<\/a><a class=\"scrollme link-body-color\" href=\"#etapa-2-configurar-um-aplicativo-expressjs-simples\">Etapa 2: configurar um aplicativo ExpressJS simples<\/a><a class=\"scrollme link-body-color\" href=\"#etapa-3-criar-a-visualizacao-e-os-arquivos-javascript\">Etapa 3: criar a visualiza\u00e7\u00e3o e os arquivos JavaScript:<\/a><a class=\"scrollme link-body-color\" href=\"#etapa-4-executar-o-aplicativo\">Etapa 4: executar o aplicativo<\/a><a class=\"scrollme link-body-color\" href=\"#entender-como-o-aplicativo-funciona\">Entender como o aplicativo funciona<\/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=\"#exemplos-praticos-como-enviar-e-mails-com-a-api-node-js-do-mailgun\">Exemplos pr\u00e1ticos: como enviar e-mails com a API Node.js do Mailgun\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#enviar-um-unico-e-mail-transacional\">Enviar um \u00fanico e-mail transacional\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#adicionar-enderecos-de-e-mail-a-uma-lista\">Adicionar endere\u00e7os de e-mail a uma lista\u00a0<\/a><a class=\"scrollme link-body-color\" href=\"#enviar-uma-fatura-com-um-anexo\">Enviar uma fatura com um anexo\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=\"#finalizacao-do-seu-remetente-de-e-mail-node-js\">Finaliza\u00e7\u00e3o do seu remetente de e-mail Node.js<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Abordaremos diferentes cen\u00e1rios:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enviar um \u00fanico e-mail transacional<\/li>\n\n\n\n<li>Enviar uma newsletter para uma lista de e-mails<\/li>\n\n\n\n<li>Adicionar endere\u00e7os de e-mail a uma lista<\/li>\n\n\n\n<li>Enviar uma fatura para um \u00fanico endere\u00e7o de e-mail<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Envio de e-mails: SMTP vs API\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ao enviar e-mails de um aplicativo Node.js, voc\u00ea pode usar um cliente SMTP direto ou uma API de e-mail. Tradicionalmente, profissionais de desenvolvimento usariam uma biblioteca como o Nodemailer para configurar uma conex\u00e3o direta a um servidor SMTP. Embora o SMTP ofere\u00e7a controle, ele traz v\u00e1rias desvantagens, como configura\u00e7\u00e3o complexa e entregabilidade ruim.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A abordagem de API, como a usada pelo Mailgun, simplifica todo o processo. Em vez de gerenciar o protocolo subjacente, voc\u00ea faz uma simples solicita\u00e7\u00e3o HTTP. A infraestrutura robusta do Mailgun lida com a comunica\u00e7\u00e3o SMTP para voc\u00ea, oferecendo melhor entregabilidade e recursos integrados como an\u00e1lises e valida\u00e7\u00e3o de e-mail.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Primeiros passos com o seu aplicativo Node.js<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta se\u00e7\u00e3o guiar\u00e1 voc\u00ea na configura\u00e7\u00e3o do seu projeto e na execu\u00e7\u00e3o do seu aplicativo.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 1: inicializa\u00e7\u00e3o do projeto<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos supor que voc\u00ea tenha instalado e saiba como operar dentro do ambiente NodeJS.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A primeira coisa que faremos \u00e9 gerar um arquivo <code>package.json<\/code> em um novo diret\u00f3rio (<code>\/mailgun_nodetut<\/code>, no meu caso). Este arquivo cont\u00e9m detalhes <strong>como o nome do projeto e as depend\u00eancias necess\u00e1rias<\/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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\">Como voc\u00ea pode ver, usaremos o <code>expressjs<\/code> para a estrutura do nosso aplicativo web, com o <code>jade<\/code> como linguagem de modelo e, por fim, uma biblioteca para Node contribu\u00edda pela comunidade por <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\">Na mesma pasta em que voc\u00ea criou o arquivo <code>package.json<\/code>, crie duas pastas adicionais: <code>views\/ js\/\u00a0<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tudo pronto \u2013 basta entrar no <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_blank\" rel=\"noreferrer noopener\">Mailgun<\/a> (\u00e9 gratuito, caso ainda n\u00e3o tenha uma conta), e obter a sua chave de API na primeira p\u00e1gina do painel de controle.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 2: configurar um aplicativo ExpressJS simples<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Salve o c\u00f3digo abaixo como <code>app.js<\/code> no diret\u00f3rio raiz do seu aplicativo (onde <code>package.json<\/code> est\u00e1 localizado)\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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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\">Etapa 3: criar a visualiza\u00e7\u00e3o e os arquivos JavaScript:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Salve o c\u00f3digo abaixo como <code>index.jade<\/code> no diret\u00f3rio <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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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>Salve o c\u00f3digo abaixo como\u00a0<\/i><i><code>error.jade<\/code><\/i><i>\u00a0no diret\u00f3rio \/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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>Salve o c\u00f3digo abaixo como\u00a0<\/i><i><code>main.js<\/code><\/i><i>\u00a0no diret\u00f3rio \/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=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-clipboard-success-label=\"Copiado!\" data-clipboard-error-label=\"N\u00e3o foi poss\u00edvel copiar\" data-tooltip=\"Copiar para a \u00e1rea de transfer\u00eancia\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar para a \u00e1rea de transfer\u00eancia\">\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\">Por fim, crie um arquivo <code>invoice.txt<\/code> vazio na sua pasta raiz. Este arquivo ser\u00e1 enviado como um anexo.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 4: executar o aplicativo<\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Execute <code>npm install<\/code> (ou <code>sudo npm install<\/code> em alguns casos, dependendo dos seus m\u00e9todos de instala\u00e7\u00e3o) para baixar depend\u00eancias, incluindo o Express.\u00a0<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Conclu\u00eddo isso, execute <code>node app.js\u00a0<\/code><\/li>\n<\/ol>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Navegue no seu navegador para <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\">Estas tr\u00eas etapas f\u00e1ceis s\u00e3o o come\u00e7o para enviar e-mails transacionais sob demanda!\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Entender como o aplicativo funciona<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este acima \u00e9 um aplicativo express simples que ser\u00e1 executado na sua m\u00e1quina local na porta\u00a0<code>3030<\/code>. N\u00f3s o definimos para usar o expressjs e o wrapper mailgun-js. Estas s\u00e3o bibliotecas muito conhecidas que nos ajudar\u00e3o a\u00a0<b>configurar rapidamente um pequeno site<\/b>\u00a0que permitir\u00e1 \u00e0 base de usu\u00e1rios acionar o envio de e-mails para seus endere\u00e7os.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Os endpoints<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00f3s definimos quatro endpoints.<\/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\">Onde\u00a0<code>:mail<\/code>\u00a0\u00e9 o seu endere\u00e7o de e-mail v\u00e1lido.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao navegar para um endpoint, o Express enviar\u00e1 uma visualiza\u00e7\u00e3o diferente para o navegador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em segundo plano, o Express pegar\u00e1 a entrada fornecida pelo navegador e a processar\u00e1 com a ajuda da biblioteca\u00a0<code>mailgun-js<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No primeiro caso, navegaremos at\u00e9 a raiz, que \u00e9\u00a0<code>localhost:3030\/<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode ver que h\u00e1 uma caixa de entrada solicitando o seu endere\u00e7o de e-mail. Ao fazer isso,\u00a0<b>voc\u00ea enviar\u00e1 um belo e-mail transacional para o seu endere\u00e7o.<\/b><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso ocorre porque o expressjs pega o seu endere\u00e7o de e-mail a partir do par\u00e2metro da URL e, usando a sua chave de API e dom\u00ednio, faz uma chamada de API para o endpoint a fim de enviar e-mails.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada endpoint invocar\u00e1 um layout diferente; adicionei o c\u00f3digo de layouts b\u00e1sicos abaixo, fique \u00e0 vontade para adicionar e remover coisas dele.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Exemplos pr\u00e1ticos: como enviar e-mails com a API Node.js do Mailgun\u00a0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No nosso exemplo, vimos como voc\u00ea pode enviar um e-mail transacional automaticamente quando o usu\u00e1rio aciona uma a\u00e7\u00e3o espec\u00edfica.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enviar um \u00fanico e-mail transacional\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ao navegar at\u00e9 a raiz <code>localhost:3030\/<\/code>, voc\u00ea ver\u00e1 uma caixa de entrada solicitando o seu endere\u00e7o de e-mail. Ao fazer isso, voc\u00ea envia para o seu endere\u00e7o um belo e-mail transacional.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Adicionar endere\u00e7os de e-mail a uma lista\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O endpoint <code>\/validate\/:mail<\/code> mostra como adicionar um endere\u00e7o de e-mail a uma lista de e-mails. Para os fins deste tutorial, voc\u00ea precisa criar uma lista de e-mails em <code>Mailgun.com\/cp\/lists<\/code> e colocar o endere\u00e7o dela no c\u00f3digo <code>app.js<\/code>.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Enviar uma fatura com um anexo\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O endpoint <code>\/invoice\/:mail<\/code> mostra como enviar um anexo. N\u00f3s importamos o m\u00f3dulo path para encontrar o caminho completo para anexar o arquivo <code>invoice.txt<\/code> vazio no seu diret\u00f3rio raiz.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Finaliza\u00e7\u00e3o do seu remetente de e-mail Node.js<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No nosso exemplo, vimos como voc\u00ea pode enviar um e-mail transacional automaticamente quando o usu\u00e1rio aciona uma a\u00e7\u00e3o espec\u00edfica, em nosso caso espec\u00edfico, ao enviar o formul\u00e1rio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1\u00a0<b>milhares de aplicativos aos quais voc\u00ea pode adaptar esse cen\u00e1rio<\/b>. O envio de e-mails pode ser usado para:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Registrar uma conta em um site e enviar e-mail de mensagem de\u00a0<i>Ol\u00e1\u00a0<\/i><\/li>\n\n\n\n<li>Redefinir uma senha<\/li>\n\n\n\n<li>Confirmar compras ou a\u00e7\u00f5es cr\u00edticas (exclus\u00e3o de uma conta)<\/li>\n\n\n\n<li>Autentica\u00e7\u00e3o de dois fatores com m\u00faltiplos endere\u00e7os de e-mail<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Para que voc\u00ea usa e-mails transacionais no seu neg\u00f3cio no dia a dia?<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Enviar e-mails transacionais \u00e9 f\u00e1cil, independentemente das suas ferramentas. Se voc\u00ea usa uma biblioteca auxiliar do NodeJS, este guia ajudar\u00e1 a configurar tudo no 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-20166","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>Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.\" \/>\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\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-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 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/\",\"name\":\"Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Email.png\",\"datePublished\":\"2026-09-14T22:07:59+00:00\",\"description\":\"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-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\\\/pt\\\/blog\\\/email\\\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/inicio\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como enviar e-mail transacional em um aplicativo NodeJS usando a API do Mailgun\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#\\\/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\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun","description":"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.","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\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/","og_locale":"pt_BR","og_type":"article","og_title":"Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun","og_description":"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-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 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/","name":"Como enviar e-mails no NodeJS: exemplos de SMTP e API - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Email.png","datePublished":"2026-09-14T22:07:59+00:00","description":"Aprenda a enviar e-mails no Node.js usando a API do Mailgun. Descubra exemplos de c\u00f3digo completos sobre como enviar e-mails transacionais, anexos e muito mais.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-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\/pt\/blog\/email\/como-enviar-e-mail-transacional-em-aplicativo-nodejs-usando-api-do-mailgun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/pt\/inicio\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/pt\/blog\/"},{"@type":"ListItem","position":3,"name":"Como enviar e-mail transacional em um aplicativo NodeJS usando a API do Mailgun"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/pt\/#website","url":"https:\/\/www.mailgun.com\/pt\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Poderosas APIs de e-mail transacional que permitem a voc\u00ea enviar, receber e rastrear e-mails, criadas com os desenvolvedores em mente. Saiba mais hoje mesmo!","publisher":{"@id":"https:\/\/www.mailgun.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/pt\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/#\/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\/pt\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/users\/13"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20166\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/4074"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=20166"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=20166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}