{"id":18237,"date":"2026-09-03T11:49:18","date_gmt":"2026-09-03T11:49:18","guid":{"rendered":"https:\/\/www.mailgun.com\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/"},"modified":"2026-09-03T11:49:18","modified_gmt":"2026-09-03T11:49:18","slug":"como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar","status":"publish","type":"case-studies","link":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/","title":{"rendered":"Como o DNSimple baseado em Ruby usa a API do Mailgun para criar &amp; configurar dom\u00ednios para encaminhamento de e-mail"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">No DNSimple, n\u00f3s amamos o DNS de uma forma quase doentia. O que n\u00e3o amamos, no entanto, \u00e9 gerenciar servidores de e-mail. No in\u00edcio deste ano, decidimos adicionar o encaminhamento de e-mail como um dos servi\u00e7os que oferecemos aos nossos clientes e, dada a nossa avers\u00e3o ao gerenciamento de servidores de e-mail, fomos em busca de um provedor com uma boa API que pud\u00e9ssemos integrar facilmente. Gra\u00e7as \u00e0s recomenda\u00e7\u00f5es no Twitter, acabamos encontrando e escolhendo o Mailgun, e estamos entusiasmados com a facilidade de integra\u00e7\u00e3o e manuten\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Criando e configurando dom\u00ednios programaticamente<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usamos o HTTParty, uma excelente e pequena gem do Ruby criada por John Nunemaker, para nos comunicarmos com a API do Mailgun. Primeiro, configuramos uma classe que \u00e9 o nosso cliente:<\/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                                    require &#039;httparty&#039;\r\n\r\nclass Mailgun\r\n\r\n  class MailgunError &lt; StandardError\r\n  end\r\n\r\n  include HTTParty\r\n\r\n  base_uri &#039;https:\/\/api.mailgun.net\/v2&#039;\r\n  basic_auth &#039;api&#039;, C_.mailgun_api_key\r\n\r\nend\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\">Depois de termos essa classe, podemos chamar a API para iniciar nosso processo de cria\u00e7\u00e3o e configura\u00e7\u00e3o program\u00e1tica de novos dom\u00ednios personalizados para nossos clientes usarem para o encaminhamento de e-mails.<\/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                                    mailgun_domain_res = Mailgun.get(&quot;\/domains\/#{domain.unicode_name}&quot;)\r\nif mailgun_domain_res.code != 200\r\n  mailgun_domain_res = Mailgun.post(&#039;\/domains&#039;, :body =&gt; {:name =&gt; domain.unicode_name, :smtp_password =&gt; smtp_password})\r\n  # if created then increment the count\r\n  if mailgun_domain_res.code == 200\r\n    increment_email_forwarding(domain) \r\n  else\r\n    raise &quot;Failed to create domain in Mailgun&quot;\r\n  end\r\nend\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\">Nesse caso, primeiro verificamos se um dom\u00ednio existe no Mailgun. Se j\u00e1 existir, podemos passar para a pr\u00f3xima etapa. Se n\u00e3o existir, n\u00f3s o criamos invocando uma solicita\u00e7\u00e3o POST para o recurso \/domains. Passamos o nome e uma senha SMTP. Se o dom\u00ednio foi criado com sucesso, incrementamos a contagem de encaminhamento de e-mail para o cliente, j\u00e1 que o faturamento \u00e9 feito por dom\u00ednio. Se esta for a primeira vez que criamos o dom\u00ednio, tamb\u00e9m adicionamos registros MX para envio autom\u00e1tico para nossos clientes, bem como o registro SPF apropriado, que aumenta a entregabilidade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurando o encaminhamento de e-mail com base em correspond\u00eancia de regex<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Em seguida, configuramos o encaminhamento de e-mail solicitado pelo cliente (por exemplo, encaminhar e-mails de info@mycompany.com para paul@mycompany.com). No Mailgun, esse recurso \u00e9 chamado de \u201crota\u201d, porque descreve como realizar o roteamento de uma mensagem. No nosso caso, queremos fazer o roteamento com base em uma express\u00e3o regular fornecida pelo cliente e encaminhar o dom\u00ednio para o endere\u00e7o de e-mail de destino que ele escolher:<\/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                                    mailgun_route_res = Mailgun.post(&quot;\/routes&quot;, body: {\r\n  description: &quot;Email forwarding&quot;,\r\n  expression: %Q(match_recipient(&#039;#{email_forward_attributes[:from]}&#039;)),\r\n  action: %Q(forward(&#039;#{email_forward_attributes[:to]}&#039;))\r\n})\r\n\r\nmailgun_route = Hashie::Mash.new(mailgun_route_res.parsed_response)\r\nif mailgun_route_res.code != 200\r\n  raise Mailgun::MailgunError, mailgun_route.message\r\nend\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\">Se a rota n\u00e3o puder ser configurada, geramos um erro; caso contr\u00e1rio, retornamos a rota do Mailgun. Assim que tivermos uma rota, armazenamos o route_identifier em nosso banco de dados e pronto!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se um cliente decidir remover rotas, podemos simplesmente exclu\u00ed-las pela API:<\/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                                    mailgun_route_res = Mailgun.delete(&quot;\/routes\/#{email_forward.route_identifier}&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\">E se eles n\u00e3o tiverem mais rotas, tamb\u00e9m removemos o dom\u00ednio do sistema do Mailgun:<\/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                                    mailgun_domain_res = Mailgun.delete(&quot;\/domains\/#{domain.unicode_name}&quot;)\r\ndecrement_email_forwarding(domain)\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\">Conclus\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Em compara\u00e7\u00e3o com a dor e a frustra\u00e7\u00e3o de ter que operar e manter um sistema crescente de armazenamento e entrega de e-mail, o Mailgun fornece uma maneira extremamente simples de configurar o e-mail para nossos clientes, e n\u00f3s os adoramos por isso.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"quote hub-quote longform-spacings d-flex flex-column rounded-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 shadow-sm bg-primary\" data-theme=\"light\">\r\n\r\n        <div class=\"quote-logo mb-3\">\r\n                            <img decoding=\"async\" class=\"quote-logo\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/omnisend.svg\" alt=\"Logotipo da cita\u00e7\u00e3o de Paulius Milisauskas\">\r\n                    <\/div>\r\n\r\n        <blockquote class=\"quote-content content-body m-0 text-body-color\" id=\"quote-block-01d0d34035bd1c8b9a445d2121bba044\">\r\n            &#8220;Conseguimos garantir melhor atendimento aos nossos profissionais de marketing usando o Mailgun. Eles contam conosco, e n\u00f3s contamos com o Mailgun: e esse relacionamento nos ajuda a manter a credibilidade com nossos clientes.&#8221;        <\/blockquote>\r\n\r\n                    <div class=\"d-flex gap-3 mt-5\">\r\n                                    <div>\r\n                        <img decoding=\"async\" width=\"72\" height=\"72\" class=\"rounded-lg quote-author\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/Portrait-Paulius-Milisauskas-Omnisend.png\" alt=\"Foto de Paulius Milisauskas\">\r\n                    <\/div>\r\n                                <div class=\"d-flex flex-column align-self-center fs-sm\">\r\n                    <cite class=\"mb-0 fw-bold text-accent fst-normal\" aria-describedby=\"quote-block-01d0d34035bd1c8b9a445d2121bba044\">\r\n                        Paulius Milisauskas                    <\/cite>\r\n                                            <span class=\"mb-0 text-body-color\">Vice-presidente de Opera\u00e7\u00f5es de Clientes<\/span>\r\n                                    <\/div>\r\n            <\/div>\r\n            <\/div>\r\n\n\n    <div data-content-type=\"longform\" class=\"longform-spacings\">\r\n        <div class=\"cta bg-primary rounded-lg px-5 py-6 p-md-7 px-md-6\">\r\n                    <div class=\"form-subscription\">\r\n                            <div class=\"h4 mb-3\">\r\n                    Mantenha-me informado! Receba \u00f3timos recursos em sua caixa de entrada toda semana.                <\/div>\r\n                                    <form accept-charset=\"UTF-8\" action=\"\" enctype=\"multipart\/form-data\" data-form-subscription method=\"POST\" style=\"max-width: 400px;\">\r\n                <div class=\"row justify-content-between align-items-top g-2\">\r\n                    <div class=\"col-10\">\r\n                        <input type=\"email\" name=\"email\" class=\"form-control\" placeholder=\"Email\" autocomplete=\"email\" required>\r\n                        <div data-fs=\"error\" role=\"alert\" class=\"invalid-feedback\">\r\n                            Please complete this required field.                        <\/div>\r\n                    <\/div>\r\n                                            <div class=\"col-12 order-last mt-3 fs-xxs\" data-fs=\"acceptance\" style=\"display:none;\">\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-terms-3374\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-3374\" class=\"form-check-label text-body-color\">\r\n                                        I have read and agree to the Terms of Service.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                            \r\n                                <div class=\"form-check\">\r\n                                    <input id=\"formSubscriptionAcceptance-privacy-9188\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-9188\" class=\"form-check-label text-body-color\">\r\n                                        I have read and agree to the Privacy Policy.                                        <span class=\"hs-form-required\">*<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n\r\n                                                    <\/div>\r\n                    \r\n                                            <div class=\"col-12 order-last fs-xxs mb-0 mt-2 text-body-color\">\r\n                            Envie-me a newsletter da Mailjet. Eu concordo expressamente em receber a newsletter e sei que posso cancelar a inscri\u00e7\u00e3o facilmente a qualquer momento.                        <\/div>\r\n                    \r\n                    <div class=\"col-2\">\r\n                        <button type=\"submit\" value=\"Submit\" aria-label=\"Submit\" class=\"btn btn-secondary btn-icon\">\r\n                            <svg aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/layout\/chevron-right.svg\"><\/svg>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <input type=\"hidden\" name=\"formSubscriptionRecaptchaToken\" data-fs=\"recaptcha-token\">\r\n                <input type=\"hidden\" name=\"customListID\" value=\"\">\r\n\r\n            <\/form>\r\n            <div data-fs=\"message-success\" style=\"display: none;\">\r\n                <p class=\"mb-0 mt-2 text-body-color\">\r\n                    Verifique sua caixa de entrada mensalmente para receber sua newsletter da Mailjet!                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Este post foi escrito por Anthoy Eden, fundador e desenvolvedor, no DNSimple. O DNSimple \u00e9 a maneira sem complica\u00e7\u00f5es de gerenciar todos os seus dom\u00ednios em um \u00fanico lugar, sem precisar clicar em 10 telas de vendas adicionais para concluir uma compra simples. Al\u00e9m dos servi\u00e7os de registrador, o DNSimple oferece uma API REST para criar e gerenciar dom\u00ednios e registros. Eles tamb\u00e9m facilitam o recebimento de e-mail no seu dom\u00ednio e o encaminhamento para qualquer outra conta de e-mail, como um alias de e-mail que voc\u00ea configurou para lidar com e-mails de suporte ou faturamento, ou um provedor de e-mail externo, como o Gmail.<\/p>\n","protected":false},"author":90,"featured_media":8224,"template":"","meta":{"_acf_changed":true},"class_list":["post-18237","case-studies","type-case-studies","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Como o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun<\/title>\n<meta name=\"description\" content=\"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir\" \/>\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\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/\" \/>\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\/01\/Mailgun-Case-Study-DNSimple.png\" \/>\n\t<meta property=\"og:image:width\" content=\"592\" \/>\n\t<meta property=\"og:image:height\" content=\"368\" \/>\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=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/\",\"name\":\"Como o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-DNSimple.png\",\"datePublished\":\"2026-09-03T11:49:18+00:00\",\"description\":\"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-DNSimple.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-DNSimple.png\",\"width\":592,\"height\":368},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/inicio\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Case Studies\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/pt\\\/resources\\\/case-studies\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Como o DNSimple baseado em Ruby usa a API do Mailgun para criar & configurar dom\u00ednios para encaminhamento de e-mail\"}]},{\"@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 o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun","description":"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir","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\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/","og_locale":"pt_BR","og_type":"article","og_title":"Como o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun","og_description":"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir","og_url":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","og_image":[{"width":592,"height":368,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/","url":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/","name":"Como o DNSimple baseado em Ruby usa a API do Mailgun | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","datePublished":"2026-09-03T11:49:18+00:00","description":"Nosso aplicativo da web \u00e9 desenvolvido usando Ruby on Rails, portanto, integrar o Mailgun foi muito f\u00e1cil. Para que o DNSimple usa o Mailgun? Leia mais para descobrir","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","width":592,"height":368},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/como-o-dnsimple-baseado-em-ruby-usa-a-api-do-mailgun-para-criar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/pt\/inicio\/"},{"@type":"ListItem","position":2,"name":"Case Studies","item":"https:\/\/www.mailgun.com\/pt\/resources\/case-studies\/"},{"@type":"ListItem","position":3,"name":"Como o DNSimple baseado em Ruby usa a API do Mailgun para criar & configurar dom\u00ednios para encaminhamento de e-mail"}]},{"@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\/case-studies\/18237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/case-studies"}],"about":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/types\/case-studies"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/users\/90"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media\/8224"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/pt\/wp-json\/wp\/v2\/media?parent=18237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}