{"id":20050,"date":"2024-11-21T00:00:00","date_gmt":"2024-11-21T00:00:00","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/verify-email-with-nodejs-2\/"},"modified":"2026-09-14T22:06:23","modified_gmt":"2026-09-14T22:06:23","slug":"verify-email-with-nodejs","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/","title":{"rendered":"Verificando e-mails com Node.js"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">De tempos em tempos, as pessoas na sua lista de e-mails podem mudar de emprego ou provedor de servi\u00e7os de e-mail. Quando isso acontece, os e-mails delas tamb\u00e9m mudam, deixando endere\u00e7os inv\u00e1lidos na sua lista. Esses e-mails inv\u00e1lidos podem levar a altas taxas de devolu\u00e7\u00e3o, o que prejudica a reputa\u00e7\u00e3o do remetente e aumenta a chance de entrar em uma lista de bloqueio de spam.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A valida\u00e7\u00e3o de e-mail ajuda a evitar e-mails inv\u00e1lidos, garantindo que cheguem a caixas de entrada reais e ativas. Ao verificar endere\u00e7os de e-mail regularmente, voc\u00ea reduz as chances de devolu\u00e7\u00e3o, protege sua reputa\u00e7\u00e3o com os ISPs (provedores de servi\u00e7os de internet) e aumenta a entregabilidade geral das suas campanhas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea quer validar um lote de endere\u00e7os de e-mail, <a href=\"https:\/\/www.mailgun.com\/pt\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Mailgun<\/a> oferece uma <a href=\"https:\/\/www.mailgun.com\/blog\/product\/bulk-verifications-accurate-fast\/\" target=\"_tabs\" rel=\"noopener noreferrer\">API de valida\u00e7\u00e3o de e-mail em massa<\/a> que pode ajudar com isso. Neste tutorial, voc\u00ea aprender\u00e1 a verificar de forma eficiente grandes listas de endere\u00e7os de e-mail em <a href=\"https:\/\/nodejs.org\/en\" target=\"_tabs\" rel=\"noopener noreferrer\">Node.js<\/a> aplicativos com o Mailgun e a integrar o processo ao seu aplicativo para garantir alta entregabilidade.<\/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-9409\"><p class=\"h5 m-0\" id=\"toc-title-9409\">\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=\"#pre-requisitos\">Pr\u00e9-requisitos<\/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=\"#como-verificar-e-mails-com-node-js-e-a-api-do-mailgun\">Como verificar e-mails com Node.js e a API do Mailgun<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#obtendo-chaves-de-api-e-configurando-um-dominio-personalizado\">Obtendo chaves de API e configurando um dom\u00ednio personalizado<\/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=\"#configurando-o-ambiente-de-desenvolvimento\">Configurando o ambiente de desenvolvimento<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#validando-e-mails-em-uma-lista-de-e-mails\">Validando e-mails em uma lista de e-mails<\/a><a class=\"scrollme link-body-color\" href=\"#buscando-os-resultados-da-validacao\">Buscando os resultados da valida\u00e7\u00e3o<\/a><a class=\"scrollme link-body-color\" href=\"#aqui-esta-um-detalhamento-dos-resultados\">Aqui est\u00e1 um detalhamento dos resultados:<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#tratamento-de-erros-e-depuracao\">Tratamento de erros e depura\u00e7\u00e3o<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">07<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#praticas-recomendadas-para-validacao-de-e-mail-em-massa\">Pr\u00e1ticas recomendadas para valida\u00e7\u00e3o de e-mail em massa<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">08<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#conclusao\">Conclus\u00e3o<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e9-requisitos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para acompanhar este tutorial, voc\u00ea precisar\u00e1 de:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Conhecimento b\u00e1sico de Node.js<\/li>\n\n\n\n<li>Um <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_tabs\" rel=\"noopener noreferrer\">conta do Mailgun<\/a>; para usar a valida\u00e7\u00e3o de e-mail em massa, voc\u00ea precisa ter uma conta paga<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Como verificar e-mails com Node.js e a API do Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para verificar e-mails com Node.js usando a API do Mailgun, crie uma lista de e-mails e adicione os e-mails que deseja validar. Em seguida, voc\u00ea pode iniciar um trabalho de valida\u00e7\u00e3o na lista de e-mails e recuperar os resultados. Por\u00e9m, antes de fazer solicita\u00e7\u00f5es \u00e0 API do Mailgun, voc\u00ea precisa dos seus detalhes de autentica\u00e7\u00e3o do painel. Voc\u00ea tamb\u00e9m precisa configurar e verificar um dom\u00ednio personalizado para criar uma lista de e-mails.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obtendo chaves de API e configurando um dom\u00ednio personalizado<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A API do Mailgun autoriza solicita\u00e7\u00f5es usando HTTP Basic Auth, o que exige que voc\u00ea inclua um nome de usu\u00e1rio e uma senha no cabe\u00e7alho Authorization. Para obter os detalhes necess\u00e1rios, fa\u00e7a login na sua conta do Mailgun, clique no \u00edcone de menu suspenso no canto superior direito da tela e clique em \u201c<b>API Security<\/b>\u201d no menu:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4060\" width=\"1242\" height=\"596\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM.png\" alt=\"API Security screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM.png 1242w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-300x144.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-768x369.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.32_PM-1024x491.png 1024w\" sizes=\"(max-width: 1242px) 100vw, 1242px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Na p\u00e1gina \u201c<b>API Security<\/b>\u201d, clique no bot\u00e3o \u201c<b>Add new key<\/b>\u201d para revelar um modal com um formul\u00e1rio. Preencha a descri\u00e7\u00e3o no formul\u00e1rio, clique em \u201c<b>Create Key<\/b>\u201d, copie a chave de API e guarde-a com seguran\u00e7a; essa \u00e9 a sua senha e voc\u00ea s\u00f3 pode v\u00ea-la uma vez:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4065\" width=\"1232\" height=\"626\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM.png\" alt=\"Create Key screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM.png 1232w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-300x152.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-768x390.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.38_PM-1024x520.png 1024w\" sizes=\"(max-width: 1232px) 100vw, 1232px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, voc\u00ea pode optar por <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/360026833053-Domain-Verification-Setup-Guide\" target=\"_tabs\" rel=\"noopener noreferrer\">adicionar um dom\u00ednio personalizado \u00e0 sua conta do Mailgun e verific\u00e1-lo<\/a>. Esta etapa \u00e9 opcional e necess\u00e1ria apenas em ambientes de produ\u00e7\u00e3o. Para este tutorial, voc\u00ea usar\u00e1 o dom\u00ednio padr\u00e3o fornecido pelo Mailgun, que pode ser encontrado acessando \u201c<b>Send &gt; Sending &gt; Domains<\/b>\u201d:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-4070\" width=\"1242\" height=\"592\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM.png\" alt=\"Sending Domain screen\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM.png 1242w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-300x143.png 300w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-768x366.png 768w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/Screenshot_2024-11-20_at_3.50.44_PM-1024x488.png 1024w\" sizes=\"(max-width: 1242px) 100vw, 1242px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Anote o nome de dom\u00ednio padr\u00e3o; voc\u00ea precisar\u00e1 dele para criar uma lista de e-mails.<br>\nAp\u00f3s recuperar os detalhes de autentica\u00e7\u00e3o e adicionar um dom\u00ednio personalizado (ou anotar o padr\u00e3o), \u00e9 hora de configurar um ambiente de desenvolvimento Node.js onde voc\u00ea far\u00e1 solicita\u00e7\u00f5es \u00e0 API do Mailgun.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando o ambiente de desenvolvimento<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para configurar um ambiente de desenvolvimento Node.js, primeiro crie um novo diret\u00f3rio de projeto e acesse-o executando o seguinte comando:<\/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                                    mkdir bulk-email-validation &amp;&amp; cd bulk-email-validationrnThen, initialize npm in your project by running this command:rnnpm init -yrnRun the following command to install the required dependencies:rnnpm install axios dotenv form-datarn\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\">As depend\u00eancias instaladas incluem o seguinte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.npmjs.com\/package\/axios\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Axios<\/b><\/a>: esta \u00e9 uma biblioteca que permite enviar solicita\u00e7\u00f5es e receber respostas de uma API. Voc\u00ea usar\u00e1 o Axios para se comunicar com a API do Mailgun.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/dotenv\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Dotenv<\/b><\/a>: esta \u00e9 uma biblioteca que carrega vari\u00e1veis de ambiente no process.env. Voc\u00ea a usar\u00e1 para gerenciar seus detalhes de autentica\u00e7\u00e3o com seguran\u00e7a.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/form-data\" target=\"_tabs\" rel=\"noopener noreferrer\"><b>Form-Data<\/b><\/a>: esta \u00e9 uma biblioteca que cria fluxos leg\u00edveis do tipo multipart\/form-data. A API do Mailgun aceita dados apenas em multipart\/form-data, ent\u00e3o voc\u00ea precisa dessa biblioteca para enviar formul\u00e1rios para a API.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s instalar essas depend\u00eancias, crie um arquivo index.js e um arquivo .env. No seu arquivo .env, armazene as seguintes vari\u00e1veis e substitua os valores de placeholder pelos seus valores reais:<\/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                                    MAILGUN_USERNAME = apirnMAILGUN_PASSWORD = &lt;API_KEY&gt;rnThe value of your username must be api.rnIn your index.js file, add the following code block to import all the required dependencies and initialize dotenv:rnconst axios = require(&quot;axios&quot;);rnconst FormData = require(&quot;form-data&quot;);rnconst fs = require(&quot;node:fs&quot;);rnconst dotenv = require(&quot;dotenv&quot;);rndotenv.config();\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\">Este bloco de c\u00f3digo importa as depend\u00eancias necess\u00e1rias para fazer solicita\u00e7\u00f5es \u00e0 API do Mailgun. Al\u00e9m dos pacotes instalados anteriormente, as importa\u00e7\u00f5es incluem o m\u00f3dulo fs do Node.js, necess\u00e1rio para criar um fluxo leg\u00edvel para o arquivo contendo sua lista de e-mails.<br>\nAgora que seu ambiente de desenvolvimento est\u00e1 pronto, voc\u00ea pode validar endere\u00e7os de e-mail em uma lista de e-mails.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Validando e-mails em uma lista de e-mails<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Como mencionado nos pr\u00e9-requisitos, para usar o servi\u00e7o de valida\u00e7\u00e3o de e-mail em massa com o Mailgun, voc\u00ea precisa ter uma conta paga.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para criar um trabalho de valida\u00e7\u00e3o com a API do Mailgun, voc\u00ea precisa fazer uma solicita\u00e7\u00e3o POST para https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}, onde listId \u00e9 qualquer valor arbitr\u00e1rio que voc\u00ea atribuir ao trabalho de valida\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este endpoint aceita um formul\u00e1rio com um arquivo CSV contendo os endere\u00e7os de e-mail que voc\u00ea deseja validar. O cabe\u00e7alho da coluna para e-mails do arquivo CSV precisa ser email ou email_address, e o formato deve ser CSV bruto ou gzip. Voc\u00ea pode incluir um n\u00famero ilimitado de endere\u00e7os de e-mail no arquivo; no entanto, o tamanho do arquivo n\u00e3o pode exceder 25 MB.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A chave do formul\u00e1rio para o arquivo CSV deve ser file, e o valor deve ser um fluxo leg\u00edvel para o caminho do seu arquivo CSV.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea pode adicionar o bloco de c\u00f3digo abaixo ao seu arquivo index.js para implementar uma fun\u00e7\u00e3o e criar um trabalho de valida\u00e7\u00e3o em massa:<\/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                                    const createBulkValidationJob = async (listId) =&gt; {rn  try {rn    \/\/ Create a new form data objectrn    const form = new FormData();rnrn    \/\/ Add the file to the formrn    form.append(&quot;file&quot;, fs.createReadStream(&quot;PATH_TO_CSV_FILE&quot;));rnrn    const response = await axios.post(rn      `https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}`,rn      form,rn      {rn        headers: {rn          ...file.getHeaders(),rn          Authorization:rn            &quot;Basic &quot; +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString(&quot;base64&quot;),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response similar to this:rn{rn  id: &#039;validation&#039;, \/\/ Arbitrary value you assigned to the validation jobrn  message: &#039;The validation job was submitted.&#039;rn}\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\">Validar uma lista de e-mails leva tempo; para obter os resultados da valida\u00e7\u00e3o, voc\u00ea precisa fazer uma solicita\u00e7\u00e3o \u00e0 API com o id do seu trabalho de valida\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Buscando os resultados da valida\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para buscar os resultados de um trabalho de valida\u00e7\u00e3o, voc\u00ea precisa fazer uma solicita\u00e7\u00e3o GET para https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}, onde o listId \u00e9 o id que voc\u00ea atribuiu ao trabalho de valida\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adicione o bloco de c\u00f3digo a seguir ao seu arquivo index.js para implementar uma fun\u00e7\u00e3o e buscar os resultados da sua valida\u00e7\u00e3o:<\/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                                    const getValidationResults = async (listId) =&gt; {rn  try {rn    const response = await axios.get(rn      `https:\/\/api.mailgun.net\/v4\/address\/validate\/bulk\/${listId}`,rn      {rn        headers: {rn          Authorization:rn            &quot;Basic &quot; +rn            Buffer.from(rn              `${process.env.MAILGUN_USERNAME}:${process.env.MAILGUN_PASSWORD}`rn            ).toString(&quot;base64&quot;),rn        },rn      }rn    );rnrn    console.log(response.data);rn  } catch (error) {rn    console.error(error);rn  }rn};rnCalling this function with a listId should return a response like this:rn{rn  created_at: 1728170695,rn  download_url: {rn    &quot;csv&quot;: &quot;https:\/\/s3.aws-example.com\/downloads\/bulk_validation_oct_2024.csv.zip&quot;,rn    &quot;json&quot;: &quot;https:\/\/s3.aws-example.com\/downloads\/bulk_validation_oct_2024.json.zip&quot;rn  },rn  id: &#039;validation&#039;,rn  quantity: 10,rn  records_processed: 10,rn  status: &#039;uploaded&#039;,rn  summary: {rn    result: {rn      catch_all: 0,rn      deliverable: 3,rn      do_not_send: 0,rn      undeliverable: 1,rn      unknown: 6rn    },rn    risk: { high: 1, low: 3, medium: 0, unknown: 6 }rn  }rn}\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\">Aqui est\u00e1 um detalhamento dos resultados:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>created_at<\/code>: um carimbo de data\/hora de quando o trabalho foi conclu\u00eddo (1728170695).<\/li>\n\n\n\n<li><code>download_url<\/code>: links para baixar os resultados nos formatos CSV e JSON.<\/li>\n\n\n\n<li><code>Quantity:<\/code> o n\u00famero total de e-mails processados (10).<\/li>\n\n\n\n<li><code>Status<\/code>: o status do trabalho de valida\u00e7\u00e3o (uploaded).<\/li>\n\n\n\n<li><code>Result<\/code>: o resultado da valida\u00e7\u00e3o de e-mail:<\/li>\n\n\n\n<li>catch_all: nenhum endere\u00e7o \u00e9 de dom\u00ednios catch-all.\n<ul class=\"wp-block-list\">\n<li><code>deliverable<\/code>: tr\u00eas endere\u00e7os s\u00e3o v\u00e1lidos e podem ser entregues.<\/li>\n\n\n\n<li><code>do_not_send<\/code>: nenhum endere\u00e7o foi sinalizado como &#8220;n\u00e3o enviar&#8221;.<\/li>\n\n\n\n<li><code>undeliverable<\/code>: um endere\u00e7o \u00e9 inv\u00e1lido ou n\u00e3o pode ser entregue.<\/li>\n\n\n\n<li><code>unknown<\/code>: seis endere\u00e7os n\u00e3o puderam ser verificados.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>Risk<\/code>: um detalhamento dos endere\u00e7os de e-mail por risco:\n<ul class=\"wp-block-list\">\n<li><code>high<\/code>: um endere\u00e7o \u00e9 de alto risco e provavelmente n\u00e3o pode ser entregue ou \u00e9 problem\u00e1tico.<\/li>\n\n\n\n<li><code>low<\/code>: tr\u00eas endere\u00e7os s\u00e3o considerados de baixo risco e seguros para uso.<\/li>\n\n\n\n<li><code>medium<\/code>: nenhum endere\u00e7o \u00e9 de m\u00e9dio risco e pode exigir cautela.<\/li>\n\n\n\n<li><code>unknown<\/code>: seis endere\u00e7os n\u00e3o puderam ser classificados.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Voc\u00ea pode encontrar uma resposta mais abrangente nos relat\u00f3rios JSON\/CSV, que podem ser baixados usando os links em <b>download_url<\/b>. Usando essas informa\u00e7\u00f5es, voc\u00ea pode limpar sua lista e tomar medidas mais pr\u00e1ticas para garantir que ela n\u00e3o tenha e-mails inv\u00e1lidos, aumentando as taxas de entregabilidade ao <a href='https:\/\/www.mailgun.com\/blog\/email\/how-to-send-transactional-email-in-a-nodejs-app-using-the-mailgun-api\/'>enviar e-mails transacionais<\/a> ou campanhas de e-mail.<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Tratamento de erros e depura\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ao usar a API do Mailgun para valida\u00e7\u00e3o de e-mail em massa, voc\u00ea pode encontrar alguns erros comuns. Aqui est\u00e1 um detalhamento desses erros e dicas de como solucion\u00e1-los:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>List already exists<\/b>: este erro de c\u00f3digo de status 409 indica que j\u00e1 existe um trabalho de valida\u00e7\u00e3o com o mesmo listId que voc\u00ea est\u00e1 tentando criar. Voc\u00ea pode corrigir esse erro alterando o listId e tentando fazer a solicita\u00e7\u00e3o novamente.<\/li>\n\n\n\n<li><b>List CSV file missing<\/b>: este erro de c\u00f3digo de status 400 indica que a API n\u00e3o conseguiu encontrar o arquivo CSV na sua solicita\u00e7\u00e3o porque voc\u00ea est\u00e1 usando a chave de arquivo incorreta. Certifique-se de que a sua chave de arquivo esteja definida como file, depois tente novamente.<\/li>\n\n\n\n<li><b>CSV File must contain the key email or email_address<\/b>: este erro de c\u00f3digo de status 400 indica que o seu arquivo CSV n\u00e3o possui um cabe\u00e7alho de coluna email ou email_address. Voc\u00ea pode corrigir esse erro editando o seu arquivo CSV para conter um desses cabe\u00e7alhos.<\/li>\n\n\n\n<li><b>CSV file is malformed<\/b>: este erro de c\u00f3digo de status 400 indica que o seu arquivo est\u00e1 em um formato n\u00e3o compat\u00edvel. Certifique-se de que o arquivo contendo seus e-mails esteja no formato CSV ou gzip.<\/li>\n\n\n\n<li><b>unauthorized<\/b>: este erro de c\u00f3digo de status 401 indica um problema com suas credenciais de autentica\u00e7\u00e3o. Voc\u00ea pode corrigir isso garantindo que suas chaves de API sejam v\u00e1lidas.<\/li>\n<\/ul>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> A resolu\u00e7\u00e3o de erros da API do Mailgun para valida\u00e7\u00e3o de e-mail em massa frequentemente envolve verificar os formatos de arquivo e conflitos de nomenclatura, cabe\u00e7alhos e credenciais de autentica\u00e7\u00e3o. Garantir que os arquivos CSV estejam estruturados corretamente e usar chaves de API v\u00e1lidas ajudar\u00e1 a evitar esses problemas comuns.<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00e1ticas recomendadas para valida\u00e7\u00e3o de e-mail em massa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para garantir que os seus trabalhos de valida\u00e7\u00e3o em massa funcionem como esperado, aqui est\u00e3o algumas pr\u00e1ticas recomendadas que voc\u00ea pode seguir:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Respect API limits<\/b>: certifique-se de respeitar os limites impostos pela API do Mailgun para garantir que todas as suas solicita\u00e7\u00f5es sejam processadas. Por exemplo, os arquivos CSV n\u00e3o podem exceder 25 MB; arquivos maiores que isso disparar\u00e3o uma resposta 400. Al\u00e9m disso, o n\u00famero m\u00e1ximo de trabalhos de valida\u00e7\u00e3o que podem ser executados em paralelo \u00e9 cinco. Ultrapassar esse limite resultar\u00e1 em uma resposta 400.<\/li>\n\n\n\n<li><b>Use batching to avoid API limits<\/b>: se voc\u00ea estiver validando um grande conjunto de dados de e-mails, divida-os em lotes para gerenciar o tamanho do arquivo, mas fique de olho nos limites de processamento paralelo.<\/li>\n\n\n\n<li><b>Check for specific status codes<\/b>: erros diferentes requerem estrat\u00e9gias de tratamento diferentes. Por exemplo, um 400 Bad Request provavelmente indica um problema com o formato da solicita\u00e7\u00e3o; n\u00e3o tente novamente. Em vez disso, registre o erro e corrija a solicita\u00e7\u00e3o. Um 500 Internal Server Error indica um problema do lado do servidor e voc\u00ea pode tentar novamente ap\u00f3s um per\u00edodo de espera.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Neste tutorial, voc\u00ea explorou como verificar e-mails usando Node.js e a API do Mailgun. Voc\u00ea aprendeu a criar listas de e-mails, adicionar membros a elas e validar os endere\u00e7os de e-mail em massa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A valida\u00e7\u00e3o de e-mail em massa regular pode melhorar significativamente suas taxas de entregabilidade de e-mail, manter uma lista de e-mails limpa e eficaz, garantir que suas mensagens cheguem aos destinat\u00e1rios e ajudar voc\u00ea a manter uma boa reputa\u00e7\u00e3o do remetente.<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Para personalizar ainda mais seus processos de e-mail, confira <a href='https:\/\/www.mailgun.com\/blog\/email\/scheduled-email-delivery-mailgun-nodejs\/'>este artigo<\/a> que ensina como agendar a entrega de e-mails. Voc\u00ea tamb\u00e9m pode aprender a automatizar o seu fluxo de trabalho de e-mail em monitoramento na nuvem em <a href='https:\/\/www.mailgun.com\/blog\/it-and-engineering\/how-node-js-app-cloud-monitoring-uses-the-mailgun-api\/'>este artigo<\/a>.<\/div>\r\n    <\/div>\r\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_96615e5e7869a05a89a1975c3de5b37a\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Cadastre-se            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_96615e5e7869a05a89a1975c3de5b37a\">\r\n                \u00c9 f\u00e1cil come\u00e7ar. E \u00e9 gr\u00e1tis.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Veja o que voc\u00ea pode alcan\u00e7ar com a melhor plataforma de entrega de e-mail do mundo.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Proteja a reputa\u00e7\u00e3o do remetente e otimize a entregabilidade de e-mail validando endere\u00e7os de e-mail com o Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Este guia mostra como verificar grandes listas de endere\u00e7os de e-mail para reduzir devolu\u00e7\u00f5es e garantir que as mensagens cheguem a caixas de entrada ativas.<\/p>\n","protected":false},"author":12,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[19],"class_list":["post-20050","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.\" \/>\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\/dev-life\/verify-email-with-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-14T22:06:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 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\\\/dev-life\\\/verify-email-with-nodejs\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/\",\"name\":\"Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2024-11-21T00:00:00+00:00\",\"dateModified\":\"2026-09-14T22:06:23+00:00\",\"description\":\"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/dev-life\\\/verify-email-with-nodejs\\\/#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\":\"Verificando e-mails com Node.js\"}]},{\"@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":"Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun","description":"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.","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\/dev-life\/verify-email-with-nodejs\/","og_locale":"pt_BR","og_type":"article","og_title":"Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun","og_description":"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-09-14T22:06:23+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/","name":"Aprenda a verificar listas de e-mails com Node.js e Mailgun - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2024-11-21T00:00:00+00:00","dateModified":"2026-09-14T22:06:23+00:00","description":"Aprenda a validar grandes listas de e-mails usando Node.js e a API de valida\u00e7\u00e3o em massa do Mailgun. Reduza as taxas de devolu\u00e7\u00e3o, proteja a reputa\u00e7\u00e3o do remetente e melhore a entregabilidade de e-mail.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/pt\/blog\/dev-life\/verify-email-with-nodejs\/#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":"Verificando e-mails com Node.js"}]},{"@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\/20050","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\/12"}],"version-history":[{"count":1,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20050\/revisions"}],"predecessor-version":[{"id":20051,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog\/20050\/revisions\/20051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=20050"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=20050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}