{"id":18243,"date":"2026-09-03T11:49:29","date_gmt":"2026-09-03T11:49:29","guid":{"rendered":"https:\/\/www.mailgun.com\/resources\/case-studies\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/"},"modified":"2026-09-03T11:49:29","modified_gmt":"2026-09-03T11:49:29","slug":"comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer","status":"publish","type":"case-studies","link":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/","title":{"rendered":"Comment le service DNSimple bas\u00e9 sur Ruby utilise l\u2019API de Mailgun pour cr\u00e9er et configurer des domaines pour le transfert d\u2019emails"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Chez DNSimple, nous aimons les DNS d&rsquo;une mani\u00e8re presque malsaine. Ce que nous n&rsquo;aimons pas, en revanche, c&rsquo;est la gestion des serveurs d&#8217;emails. Plus t\u00f4t cette ann\u00e9e, nous avons d\u00e9cid\u00e9 d&rsquo;ajouter le transfert d&#8217;emails comme l&rsquo;un des services que nous offrons \u00e0 nos clients, et compte tenu de notre aversion pour la gestion de serveurs d&#8217;emails, nous avons cherch\u00e9 un fournisseur avec une API agr\u00e9able que nous pourrions facilement int\u00e9grer. Gr\u00e2ce aux recommandations sur Twitter, nous avons fini par trouver et choisir Mailgun et nous avons \u00e9t\u00e9 ravis de voir \u00e0 quel point il nous a \u00e9t\u00e9 facile de l&rsquo;int\u00e9grer et de le maintenir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9ation et configuration de domaines de mani\u00e8re programmatique<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l&rsquo;int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d&rsquo;enfant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous utilisons HTTParty, un petit gem Ruby sympa de John Nunemaker, pour communiquer avec l&rsquo;API de Mailgun. Tout d&rsquo;abord, nous configurons une classe qui est notre client :<\/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=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\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\">Une fois que nous avons cette classe, nous pouvons faire appel \u00e0 l&rsquo;API pour d\u00e9marrer notre processus de cr\u00e9ation et de configuration programmatiques de nouveaux domaines personnalis\u00e9s que nos clients utiliseront pour le transfert d&#8217;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=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\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\">Dans ce cas, nous v\u00e9rifions d&rsquo;abord si un domaine existe dans Mailgun. S&rsquo;il existe d\u00e9j\u00e0, nous pouvons passer \u00e0 l&rsquo;\u00e9tape suivante. S&rsquo;il n&rsquo;existe pas, nous le cr\u00e9ons en invoquant une requ\u00eate POST sur la ressource \/domains. Nous passons le nom et un mot de passe SMTP. Si le domaine a \u00e9t\u00e9 cr\u00e9\u00e9 avec succ\u00e8s, nous incr\u00e9mentons le compteur de transfert d&#8217;emails pour le client puisque nous facturons par domaine. Si c&rsquo;est la premi\u00e8re fois que nous cr\u00e9ons le domaine, nous ajoutons \u00e9galement des enregistrements MX pour l&rsquo;envoi automatique pour nos clients, ainsi que l&rsquo;enregistrement SPF appropri\u00e9 qui augmente la d\u00e9livrabilit\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration du transfert d&#8217;emails bas\u00e9e sur une correspondance d&rsquo;expression r\u00e9guli\u00e8re<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, nous configurons le transfert d&#8217;emails que le client a demand\u00e9 (par exemple, transf\u00e9rer les emails de info@mycompany.com vers paul@mycompany.com). Dans Mailgun, cette fonctionnalit\u00e9 est appel\u00e9e une \u00ab route \u00bb car elle d\u00e9crit comment router un message. Dans notre cas, nous voulons router sur la base d&rsquo;une expression r\u00e9guli\u00e8re fournie par le client et transf\u00e9rer le domaine vers l&rsquo;adresse email de destination qu&rsquo;il a choisie :<\/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=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\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 la route ne peut pas \u00eatre configur\u00e9e, nous levons une erreur, sinon nous retournons la route Mailgun. Une fois que nous avons une route, nous stockons le route_identifier dans notre base de donn\u00e9es et c&rsquo;est tout !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si un client d\u00e9cide de supprimer des routes, nous pouvons simplement les supprimer via l&rsquo;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=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\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\">Et s&rsquo;ils n&rsquo;ont plus de routes, nous supprimons \u00e9galement le domaine du syst\u00e8me 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=\"Copier dans le presse-papiers\" data-clipboard-success-label=\"Copi\u00e9\u00a0!\" data-clipboard-error-label=\"Impossible de copier\" data-tooltip=\"Copier dans le presse-papiers\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copier dans le presse-papiers\">\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\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Compar\u00e9 \u00e0 la douleur et \u00e0 la frustration de devoir exploiter et maintenir un syst\u00e8me de stockage et de livraison d&#8217;emails en pleine croissance, Mailgun offre un moyen extr\u00eamement simple de configurer des emails pour nos clients, et nous les aimons pour cela.<\/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=\"Logo de citation de Paulius Milisauskas\">\r\n                    <\/div>\r\n\r\n        <blockquote class=\"quote-content content-body m-0 text-body-color\" id=\"quote-block-3542d0115ce904da6be482e83098d4d2\">\r\n            \u00ab\u00a0L\u2019utilisation de Mailgun nous permet d\u2019assurer un meilleur service \u00e0 nos marketeurs. Ils comptent sur nous, et nous comptons sur Mailgun : et cette relation nous aide \u00e0 maintenir notre cr\u00e9dibilit\u00e9 aupr\u00e8s de nos clients.\u00a0\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=\"Photo 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-3542d0115ce904da6be482e83098d4d2\">\r\n                        Paulius Milisauskas                    <\/cite>\r\n                                            <span class=\"mb-0 text-body-color\">Vice-pr\u00e9sident des op\u00e9rations clients<\/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                    Tenez-moi au courant ! Recevez d&rsquo;excellentes ressources dans votre bo\u00eete de r\u00e9ception chaque semaine.                <\/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-5019\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-5019\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte les conditions d&rsquo;utilisation.                                        <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-8664\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-8664\" class=\"form-check-label text-body-color\">\r\n                                        J&rsquo;ai lu et j&rsquo;accepte la politique de confidentialit\u00e9.                                        <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                            Envoyez-moi la newsletter Mailjet. J&rsquo;accepte express\u00e9ment de recevoir la newsletter et je sais que je peux facilement me d\u00e9sabonner \u00e0 tout moment.                        <\/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                    D\u00e9couvrez la newsletter de Mailjet chaque mois dans votre bo\u00eete de r\u00e9ception.                <\/p>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\r\n    <\/div>\r\n","protected":false},"excerpt":{"rendered":"<p>Cet article est \u00e9crit par Anthony Eden, fondateur et d\u00e9veloppeur chez DNSimple. DNSimple est le moyen sans tracas de g\u00e9rer tous vos domaines en un seul endroit sans avoir \u00e0 cliquer sur 10 \u00e9crans de ventes incitatives pour effectuer un simple achat. En plus des services de registraire, DNSimple propose une API REST pour cr\u00e9er et g\u00e9rer des domaines et des enregistrements. Ils facilitent \u00e9galement la r\u00e9ception d&#8217;emails sur votre domaine et leur transfert vers tout autre compte email, comme un alias d&#8217;email que vous avez configur\u00e9 pour g\u00e9rer les emails de support ou de facturation, ou un service de messagerie externe comme Gmail.<\/p>\n","protected":false},"author":90,"featured_media":8224,"template":"","meta":{"_acf_changed":true},"class_list":["post-18243","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>Comment DNSimple bas\u00e9 sur Ruby utilise l&#039;API de Mailgun | Mailgun<\/title>\n<meta name=\"description\" content=\"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l&#039;int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d&#039;enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir\" \/>\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\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment DNSimple bas\u00e9 sur Ruby utilise l&#039;API de Mailgun | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l&#039;int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d&#039;enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/\" \/>\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 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/\",\"name\":\"Comment DNSimple bas\u00e9 sur Ruby utilise l'API de Mailgun | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-DNSimple.png\",\"datePublished\":\"2026-09-03T11:49:29+00:00\",\"description\":\"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l'int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d'enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/#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\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Case Studies\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Comment le service DNSimple bas\u00e9 sur Ruby utilise l\u2019API de Mailgun pour cr\u00e9er et configurer des domaines pour le transfert d\u2019emails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#\\\/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\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comment DNSimple bas\u00e9 sur Ruby utilise l'API de Mailgun | Mailgun","description":"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l'int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d'enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir","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\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment DNSimple bas\u00e9 sur Ruby utilise l'API de Mailgun | Mailgun","og_description":"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l'int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d'enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir","og_url":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/","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 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/","url":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/","name":"Comment DNSimple bas\u00e9 sur Ruby utilise l'API de Mailgun | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-DNSimple.png","datePublished":"2026-09-03T11:49:29+00:00","description":"Notre application web est d\u00e9velopp\u00e9e avec Ruby on Rails, l'int\u00e9gration de Mailgun a donc \u00e9t\u00e9 un jeu d'enfant. Pourquoi DNSimple utilise-t-il Mailgun ? Lisez la suite pour le d\u00e9couvrir","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/#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\/fr\/ressources\/etudes-de-cas\/comment-dnsimple-base-sur-ruby-utilise-lapi-de-mailgun-pour-creer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Case Studies","item":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/"},{"@type":"ListItem","position":3,"name":"Comment le service DNSimple bas\u00e9 sur Ruby utilise l\u2019API de Mailgun pour cr\u00e9er et configurer des domaines pour le transfert d\u2019emails"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/fr\/#website","url":"https:\/\/www.mailgun.com\/fr\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Des API d\u2019emails transactionnels puissantes qui vous permettent d'envoyer, de recevoir et de suivre des emails, con\u00e7ues pour les d\u00e9veloppeurs. En savoir plus d\u00e8s aujourd'hui !","publisher":{"@id":"https:\/\/www.mailgun.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/fr\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/#\/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\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/case-studies\/18243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/case-studies"}],"about":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/types\/case-studies"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/users\/90"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/8224"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=18243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}