{"id":25474,"date":"2026-09-22T13:18:25","date_gmt":"2026-09-22T13:18:25","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/"},"modified":"2026-09-22T13:18:25","modified_gmt":"2026-09-22T13:18:25","slug":"gerenciar-e-mails-de-entrada-como-profissional-api-2-0","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/","title":{"rendered":"Gerencie e-mails de entrada como profissional [API do Mailgun 2.0]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ir t\u00e3o longe no nosso blog \u00e9 como olhar um \u00e1lbum de fotos antigo de fam\u00edlia! Este post foi publicado originalmente l\u00e1 em 2011.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enviar e-mails costumava ser dif\u00edcil, mas com a\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api_reference.html\" target=\"_tabs\" rel=\"noopener noreferrer\">API de envio de e-mail do Mailgun<\/a>\u00a0fomos al\u00e9m do SMTP e do MIME e tornamos isso uma experi\u00eancia trivial e, ouso dizer, agrad\u00e1vel.<\/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-8136\"><p class=\"h5 m-0\" id=\"toc-title-8136\">\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=\"#as-rotas-do-mailgun-chegaram-para-salvar-o-dia\">As rotas do Mailgun chegaram para salvar o dia!<\/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=\"#gerencie-e-mails-de-entrada-como-profissional-api-do-mailgun-2-0\">Gerencie e-mails de entrada como profissional [API do Mailgun 2.0]<\/a><\/div><\/div><\/nav>\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5059\" width=\"190\" height=\"143\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/incoming.jpeg\" alt=\"Baby with helmet with the word &quot;Incoming!&quot;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Mas se a sua aplica\u00e7\u00e3o precisa participar de conversas por e-mail, como costuma acontecer com apps corporativos, o envio \u00e9 menos da metade da batalha. Digamos que voc\u00ea queira criar um bot baseado em e-mail que se conecte ao fluxo de trabalho dentro do seu app corporativo. Considere os obst\u00e1culos que voc\u00ea precisaria superar:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Problemas de transporte<\/b>. As mensagens de entrada precisam chegar ao seu app de alguma forma. Isso significa que precisa haver um registro MX em algum lugar apontando para um servidor de e-mail, capaz de encaminhar o e-mail recebido para o seu c\u00f3digo. Existem muitas pegadinhas aqui. Uma delas \u00e9 que voc\u00ea provavelmente vai querer gerar uma devolu\u00e7\u00e3o de &#8220;caixa de correio inv\u00e1lida&#8221; apropriada para notificar os remetentes se houver um erro de digita\u00e7\u00e3o no endere\u00e7o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Problemas de tratamento de spam<\/b>. Assim que voc\u00ea come\u00e7ar a aceitar e-mails para um determinado dom\u00ednio MX, deve perceber que, com o tempo, a maior parte dos e-mails recebidos ser\u00e1 spam. E mesmo que sua pol\u00edtica de aceita\u00e7\u00e3o de e-mail seja baseada em uma lista de permiss\u00f5es, fazer com que o seu app lide com ataques de spam nem sempre \u00e9 o ideal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Problemas de an\u00e1lise de MIME.<\/b>\u00a0J\u00e1 falamos sobre isso antes, mas analisar o MIME \u00e9 um processo doloroso na maioria das linguagens de programa\u00e7\u00e3o. N\u00e3o existem muitas bibliotecas de an\u00e1lise de MIME e v\u00e1rias sofrem com uma baixa toler\u00e2ncia ao tr\u00e1fego do mundo real.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Conte\u00fado da mensagem.<\/b>\u00a0Seus problemas de an\u00e1lise v\u00e3o muito al\u00e9m do MIME. A maioria dos e-mails recebidos geralmente s\u00e3o respostas a mensagens enviadas antes e, de modo geral, voc\u00ea quer remover as partes gigantes citadas. Muitas vezes, tamb\u00e9m \u00e9 desej\u00e1vel extrair a assinatura de uma pessoa do corpo de uma mensagem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Parece bastante assustador para algo t\u00e3o simples quanto inserir um trecho de texto em uma aplica\u00e7\u00e3o. N\u00e3o seria legal ter algo parecido com o\u00a0<a href=\"http:\/\/www.sinatrarb.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Sinatra<\/a>\u00a0ou\u00a0<a href=\"http:\/\/flask.pocoo.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Flask<\/a>\u00a0e poder simplesmente dizer em Python:<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                     @email_in(&quot;.*@myapp.com&quot;)rn    def incoming_message(message_obj):rn      # access various parts of the fully parsed incoming message:rn      message_obj.bodyrn      message_obj.body_without_quoted_textrn      message_obj.sender_signaturern    # stuff that matters:rn      make_profit_from(message_obj)\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\">O pessoal do Ruby adora blocos. O pessoal do Ruby adoraria poder dizer:<\/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                                Ruby                            <\/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-Ruby\">\r\n                                <code id=\"code_0_content\" class=\"language-Ruby\">\r\n\r\n                                     email_in &quot;.*@myapp.com&quot; do |message_obj|rn      # sweet profit-making code...rn    end\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\">A ideia por tr\u00e1s desses exemplos de c\u00f3digo \u00e9 parecida com o mecanismo de roteamento apresentado nas estruturas MVC modernas, mas, em vez de associar URLs \u00e0s a\u00e7\u00f5es do controlador, queremos definir rotas que correspondam a um padr\u00e3o de endere\u00e7o de destinat\u00e1rio para uma fun\u00e7\u00e3o em seu c\u00f3digo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas como voc\u00ea pode implementar email_in() levando em conta as dificuldades listadas acima?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">As rotas do Mailgun chegaram para salvar o dia!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00f3s as projetamos especificamente com esse caso de uso em mente, e elas s\u00e3o, de longe, a forma mais agrad\u00e1vel de criar um app de mensagens de e-mail bidirecional. Confie em n\u00f3s, somos especialistas em e-mails!\u00a0\u00a0Mas chega de papo, vamos colocar a m\u00e3o na massa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiro, vamos definir uma nova rota no painel de controle do Mailgun. Essa rota vai associar o endere\u00e7o do destinat\u00e1rio \u00e0 express\u00e3o regular &#8220;.*@myapp.com&#8221; e, se houver correspond\u00eancia, ela far\u00e1 duas coisas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ela vai analisar a mensagem e enviar um POST para a URL &#8220;\/emailin&#8221; do seu app.<\/li>\n\n\n\n<li>Ela tamb\u00e9m vai encaminhar a c\u00f3pia da mensagem para a caixa de correio de um desenvolvedor, por exemplo, developer@myapp.com<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5060\" width=\"500\" height=\"229\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tumblr_lub6qetjH61qdp23h.png\" alt=\"Mailgun&apos;s control panel\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tumblr_lub6qetjH61qdp23h.png 500w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/tumblr_lub6qetjH61qdp23h-300x137.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora, podemos gerenciar as mensagens que entram em @myapp.com adicionando o seguinte c\u00f3digo ao aplicativo web:<\/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                                    @app.route(&quot;\/mailin&quot;, methods=[&quot;POST&quot;])  rndef mailin():  rn    # see if the message is spam:rn    is_spam = request.form[&#039;X-Mailgun-SFlag&#039;] == &#039;Yes&#039;rnrn    # access some of the email parsed values:rn    request.form[&#039;From&#039;]rn    request.form[&#039;To&#039;]rn    request.form[&#039;subject&#039;]rnrn    # stripped text does not include the original (quoted) message, only whatrn    # a user has typed:rn    request.form[&#039;stripped-text&#039;]rn    request.form[&#039;stripped-signature&#039;]rnrn    # enumerate through all attachments in the message and savern    # them to disk with their original filenames:rn    for attachment in request.files.values():rn        attachment.filenamern        data = attachment.stream.read()rn        with open(attachment.filename, &quot;w&quot;) as f:rn            f.write(data)\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Gerencie e-mails de entrada como profissional [API do Mailgun 2.0]<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos enviar uma mensagem de teste usando o Gmail para nosso aplicativo web e ver o que \u00e9 postado.<br>\nAqui est\u00e1 a captura de tela da mensagem como ela aparece no Gmail. Observe que ela tem o corpo real do que foi escrito (stripped-text), a assinatura e a parte citada que, na maioria dos casos, \u00e9 irrelevante:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-5061\" width=\"500\" height=\"344\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ev.png\" alt=\"Test email on web app from Ev Kontsevoy\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ev.png 500w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/ev-300x206.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Os dados do POST s\u00e3o mostrados abaixo como uma solicita\u00e7\u00e3o MultiDict do Python descarregada. Observe que, al\u00e9m de par\u00e2metros sint\u00e9ticos como &#8220;recipient&#8221; ou &#8220;stripped-text&#8221;, o Mailgun tamb\u00e9m envia via POST todos os cabe\u00e7alhos MIME no app, para que voc\u00ea tenha acesso total a tudo:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Par\u00e2metros do POST (descarregados no log como MultiDict do Python)<\/b><\/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                                    (&#039;From&#039;, u&#039;Ev Kontsevoy &#039;),rn(&#039;sender&#039;, u&#039;ev@mailgunhq.com&#039;),rn(&#039;To&#039;, u&#039;Awesome Bot &#039;),rn(&#039;attachment-count&#039;, u&#039;1&#039;),rn(&#039;Subject&#039;, u&#039;Re: Your application&#039;)])rn(&#039;stripped-text&#039;, u&#039;My application is attached.nThanks.&#039;),rn(&#039;stripped-html&#039;, u&#039;HTML version of stripped-text&#039;),rn(&#039;body-html&#039;, u&#039;[full html version of the message]&#039;),rn(&#039;body-plain&#039;, u&#039;[full text version of the message]&#039;),rn(&#039;stripped-signature&#039;, u&#039;-- nEv Kontsevoy,nCo-founder and CEO of Mailgun.net  - the emailnplatform for developers.&#039;),rn(&#039;recipient&#039;, u&#039;bot@hello.mailgun.org&#039;),rn(&#039;subject&#039;, u&#039;Re: Your application&#039;),rn(&#039;timestamp&#039;, u&#039;1320695889&#039;),rn(&#039;signature&#039;, u&#039;b8869291bd72f1ad38238429c370cb13a109eab01681a31b1f4a2751df1e3379&#039;),rn(&#039;token&#039;, u&#039;9ysf1gfmskxxsp1zqwpwrqf2qd4ctdmi5e$k-ajx$x0h846u88&#039;),rn(&#039;In-Reply-To&#039;, u&#039;Message-Id-of-original-message&#039;),rn(&#039;Date&#039;, u&#039;Mon, 7 Nov 2011 11:58:06 -0800&#039;),rn(&#039;Message-Id&#039;, u&#039;message-id-goes-here&#039;),rn(&#039;X-Originating-Ip&#039;, u&#039;[216.156.80.78]&#039;),rnrn# NOTE: ALL message fields are parsed and pasted. If some fields (like &quot;Cc&quot;) arern# missing here it only means they were absent from the message.\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\"><strong>Arquivos enviados via POST:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>('attachment-1', FileStorage: 'application.pdg')<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos revisar. O que temos aqui?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O tr\u00e1fego de e-mail de entrada \u00e9 correspondido com uma express\u00e3o regular aplicada a um destinat\u00e1rio da mensagem.<\/li>\n\n\n\n<li>As mensagens correspondentes s\u00e3o analisadas, verificadas quanto a spam e enviadas via HTTP POST para a URL da sua aplica\u00e7\u00e3o.<\/li>\n\n\n\n<li>As partes citadas da mensagem s\u00e3o separadas (stripped) e a assinatura \u00e9 detectada.<\/li>\n\n\n\n<li>Se sua aplica\u00e7\u00e3o estiver fora do ar e n\u00e3o responder, as mensagens v\u00e3o entrar na fila e as tentativas de entrega subsequentes ser\u00e3o feitas por at\u00e9 3 dias.<\/li>\n\n\n\n<li>Al\u00e9m disso, as mensagens correspondentes podem ser opcionalmente armazenadas em uma caixa de correio para fins de arquivamento, backup ou depura\u00e7\u00e3o.<\/li>\n\n\n\n<li>Nenhuma dessas complexidades importa mais para voc\u00ea. Voc\u00ea est\u00e1 ocupado programando aquele c\u00f3digo incr\u00edvel que gera lucros.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">E, a prop\u00f3sito, manipular as rotas de e-mail pode ser feito\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api-routes.html\" target=\"_tabs\" rel=\"noopener noreferrer\">de forma program\u00e1tica via uma API<\/a>. Isso permite que voc\u00ea construa um decorador @email_in() m\u00e1gico, estilo Flask\/Sinatra, que uniria tudo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As rotas do Mailgun podem fazer mais do que apenas uma simples correspond\u00eancia de endere\u00e7o de destinat\u00e1rio. Elas d\u00e3o suporte a capturas de express\u00f5es regulares, possuem o comportamento match-if-nothing-else, t\u00eam prioridade de execu\u00e7\u00e3o, e s\u00e3o basicamente uma linguagem de programa\u00e7\u00e3o simples para roteamento de e-mail.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9 isso. Simplesmente incr\u00edvel. Agora, vamos ao trabalho e vamos livrar o mundo dos e-mails bobos &#8220;no-reply@&#8221;. J\u00e1 estava na hora.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paz!<br>\n\u2014<br>\nEquipe do Mailgun<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Editado: sinta-se \u00e0 vontade para participar da\u00a0<a href=\"http:\/\/news.ycombinator.com\/item?id=3208376\" target=\"_tabs\" rel=\"noopener noreferrer\">discuss\u00e3o no HN<\/a><\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_d61d145d118e58e394ecc4f384b589cb\">\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_d61d145d118e58e394ecc4f384b589cb\">\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>Ir t\u00e3o longe no nosso blog \u00e9 como olhar um \u00e1lbum de fotos antigo de fam\u00edlia! Este post foi publicado originalmente l\u00e1 em 2011.<\/p>\n","protected":false},"author":13,"featured_media":4555,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[22],"class_list":["post-25474","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-product"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013\" \/>\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\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/\" \/>\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-Product.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\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/\",\"name\":\"Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"datePublished\":\"2026-09-22T13:18:25+00:00\",\"description\":\"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Product.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/blog\\\/product\\\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\\\/#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\":\"Gerencie e-mails de entrada como profissional [API do Mailgun 2.0]\"}]},{\"@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":"Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun","description":"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013","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\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/","og_locale":"pt_BR","og_type":"article","og_title":"Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun","og_description":"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013","og_url":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/","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-Product.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\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/","url":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/","name":"Gerencie e-mails de entrada como profissional API do Mailgun 2.0 - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","datePublished":"2026-09-22T13:18:25+00:00","description":"Resolva todas as suas necessidades de e-mail de entrada com o roteamento de entrada do Mailgun. Quer saber como nossas rotas come\u00e7aram? Leia mais \u2013","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Product.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/pt\/blog\/product\/gerenciar-e-mails-de-entrada-como-profissional-api-2-0\/#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":"Gerencie e-mails de entrada como profissional [API do Mailgun 2.0]"}]},{"@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\/25474","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\/25474\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/4555"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=25474"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/blog_category?post=25474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}