{"id":18238,"date":"2026-09-03T11:49:21","date_gmt":"2026-09-03T11:49:21","guid":{"rendered":"https:\/\/www.mailgun.com\/resources\/case-studies\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/"},"modified":"2026-09-03T11:49:21","modified_gmt":"2026-09-03T11:49:21","slug":"como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear","status":"publish","type":"case-studies","link":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/","title":{"rendered":"C\u00f3mo DNSimple, basado en Ruby, utiliza la API de Mailgun para crear y configurar dominios para el reenv\u00edo de email"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">En DNSimple amamos el DNS de una manera casi enfermiza. Sin embargo, lo que no nos gusta es gestionar servidores de email. A principios de este a\u00f1o, decidimos a\u00f1adir el reenv\u00edo de email como uno de los servicios que ofrecemos a nuestros clientes y, dado nuestro rechazo a la gesti\u00f3n de servidores de email, buscamos un proveedor con una buena API que pudi\u00e9ramos integrar f\u00e1cilmente. Gracias a las recomendaciones en Twitter, acabamos encontrando y eligiendo a Mailgun y hemos estado encantados con lo f\u00e1cil que ha sido para nosotros integrarlo y mantenerlo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Creaci\u00f3n y configuraci\u00f3n de dominios program\u00e1ticamente<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usamos HTTParty, una peque\u00f1a y excelente gema de Ruby de John Nunemaker, para comunicarnos con la API de Mailgun. Primero, configuramos una clase que es nuestro 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 al portapapeles\" data-clipboard-success-label=\"Copiado\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copiar al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar al portapapeles\">\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\">Una vez que tenemos esta clase, podemos llamar a la API para iniciar nuestro proceso de creaci\u00f3n y configuraci\u00f3n program\u00e1tica de nuevos dominios personalizados para que nuestros clientes los utilicen para reenviar emails.<\/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 al portapapeles\" data-clipboard-success-label=\"Copiado\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copiar al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar al portapapeles\">\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\">En este caso, primero comprobamos si existe un dominio en Mailgun. Si ya existe, podemos pasar al siguiente paso. Si no existe, lo creamos invocando una solicitud POST al recurso \/domains. Pasamos el nombre y una contrase\u00f1a SMTP. Si el dominio se cre\u00f3 correctamente, incrementamos el recuento de reenv\u00edo de email para el cliente, ya que facturamos por dominio. Si es la primera vez que creamos el dominio, tambi\u00e9n a\u00f1adimos registros MX para realizar env\u00edos autom\u00e1ticos para nuestros clientes, as\u00ed como el registro SPF adecuado, lo que aumenta la entregabilidad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n de reenv\u00edo de email basada en coincidencias de expresiones regulares<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, configuramos el reenv\u00edo de email que el cliente solicit\u00f3 (p. ej., reenviar los emails de info@mycompany.com a paul@mycompany.com). En Mailgun, esta funci\u00f3n se denomina \u00abruta\u00bb porque describe c\u00f3mo enrutar un mensaje. En nuestro caso, queremos enrutar en base a una expresi\u00f3n regular proporcionada por el cliente y reenviar el dominio a la direcci\u00f3n de email de destino que elijan:<\/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 al portapapeles\" data-clipboard-success-label=\"Copiado\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copiar al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar al portapapeles\">\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\">Si no se puede configurar la ruta, generamos un error; de lo contrario, devolvemos la ruta de Mailgun. Una vez que tenemos una ruta, almacenamos el route_identifier en nuestra base de datos, \u00a1y listo!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si un cliente decide eliminar rutas, simplemente podemos borrarlas a trav\u00e9s de la 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 al portapapeles\" data-clipboard-success-label=\"Copiado\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copiar al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar al portapapeles\">\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\">Y si ya no tienen m\u00e1s rutas, tambi\u00e9n eliminamos el dominio del sistema de 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 al portapapeles\" data-clipboard-success-label=\"Copiado\" data-clipboard-error-label=\"No se ha podido copiar\" data-tooltip=\"Copiar al portapapeles\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copiar al portapapeles\">\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\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En comparaci\u00f3n con el dolor y la frustraci\u00f3n de tener que operar y mantener un creciente sistema de almacenamiento y entrega de email, Mailgun proporciona una manera extremadamente simple de configurar el email para nuestros clientes, y los amamos por eso.<\/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 de cita de Paulius Milisauskas\">\r\n                    <\/div>\r\n\r\n        <blockquote class=\"quote-content content-body m-0 text-body-color\" id=\"quote-block-e2fa6850c802b789b599fde30227f08d\">\r\n            \u00abPodemos garantizar un mejor servicio para nuestros profesionales del marketing al usar Mailgun. Ellos cuentan con nosotros y nosotros contamos con Mailgun: y esta relaci\u00f3n nos ayuda a mantener la credibilidad ante nuestros clientes\u00bb.        <\/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-e2fa6850c802b789b599fde30227f08d\">\r\n                        Paulius Milisauskas                    <\/cite>\r\n                                            <span class=\"mb-0 text-body-color\">Vicepresidente de Operaciones de Cliente<\/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                    \u00a1Mantenme informado\/a! Recibe excelentes recursos en tu bandeja de entrada cada 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-8225\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-8225\" class=\"form-check-label text-body-color\">\r\n                                        He le\u00eddo y acepto los T\u00e9rminos de Servicio.                                        <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-6748\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-6748\" class=\"form-check-label text-body-color\">\r\n                                        He le\u00eddo y acepto la Pol\u00edtica de Privacidad.                                        <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                            Env\u00edame la newsletter de Mailjet. Acepto expresamente recibir la newsletter y s\u00e9 que puedo darme de baja f\u00e1cilmente en cualquier 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                    \u00a1Consulta mensualmente tu bandeja de entrada para recibir la newsletter de Mailjet!                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Este art\u00edculo est\u00e1 escrito por Anthoy Eden, fundador y desarrollador, en DNSimple. DNSimple es la forma m\u00e1s sencilla de gestionar todos tus dominios en un solo lugar sin tener que hacer clic en 10 pantallas de ventas adicionales para completar una compra simple. Adem\u00e1s de los servicios de registro, DNSimple ofrece una API REST para crear y gestionar dominios y registros. Tambi\u00e9n facilitan la recepci\u00f3n de email en tu dominio y el reenv\u00edo a cualquier otra cuenta de email, como un alias de email que hayas configurado para gestionar emails de asistencia o facturaci\u00f3n, o un proveedor de email externo como Gmail.<\/p>\n","protected":false},"author":90,"featured_media":8224,"template":"","meta":{"_acf_changed":true},"class_list":["post-18238","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>C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun<\/title>\n<meta name=\"description\" content=\"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo\" \/>\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\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/\" \/>\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\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/\",\"name\":\"C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-DNSimple.png\",\"datePublished\":\"2026-09-03T11:49:21+00:00\",\"description\":\"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/#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\\\/es\\\/recursos\\\/estudios-de-caso\\\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Case Studies\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/recursos\\\/estudios-de-caso\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo DNSimple, basado en Ruby, utiliza la API de Mailgun para crear y configurar dominios para el reenv\u00edo de email\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/es\\\/#\\\/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\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun","description":"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo","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\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun","og_description":"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo","og_url":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/","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\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/","url":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/","name":"C\u00f3mo DNSimple basado en Ruby usa la API de Mailgun | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","datePublished":"2026-09-03T11:49:21+00:00","description":"Nuestra aplicaci\u00f3n web est\u00e1 desarrollada en Ruby on Rails, por lo que integrar Mailgun fue muy f\u00e1cil. \u00bfPara qu\u00e9 usa DNSimple Mailgun? Lee m\u00e1s para descubrirlo","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/#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\/es\/recursos\/estudios-de-caso\/como-dnsimple-basado-en-ruby-usa-la-api-de-mailgun-para-crear\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/es\/"},{"@type":"ListItem","position":2,"name":"Case Studies","item":"https:\/\/www.mailgun.com\/es\/recursos\/estudios-de-caso\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo DNSimple, basado en Ruby, utiliza la API de Mailgun para crear y configurar dominios para el reenv\u00edo de email"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/es\/#website","url":"https:\/\/www.mailgun.com\/es\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Potentes API de email transaccional que te permiten enviar, recibir y hacer seguimiento de emails, creadas pensando en los desarrolladores. \u00a1Descubre m\u00e1s!","publisher":{"@id":"https:\/\/www.mailgun.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/es\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.mailgun.com\/es\/#\/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\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/case-studies\/18238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/case-studies"}],"about":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/types\/case-studies"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/users\/90"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media\/8224"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/es\/wp-json\/wp\/v2\/media?parent=18238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}