{"id":24666,"date":"2026-09-16T16:56:27","date_gmt":"2026-09-16T16:56:27","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/"},"modified":"2026-09-16T16:56:27","modified_gmt":"2026-09-16T16:56:27","slug":"approche-basee-donnees-maintenir-jour-emails-utilisateurs","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/","title":{"rendered":"Adopter une approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><i>Ce blog a \u00e9t\u00e9 r\u00e9dig\u00e9 par\u00a0<\/i><a href=\"http:\/\/twitter.com\/poiyzy\" target=\"_tabs\" rel=\"noopener noreferrer\"><i>Roy Young<\/i><\/a><i>. Roy, d\u00e9veloppeur Ruby qui perfectionne ses comp\u00e9tences \u00e0 la\u00a0<\/i><a href=\"http:\/\/www.gotealeaf.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\"><i>Tealeaf Academy<\/i><\/a><i>.<\/i><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ah, la table <i>\u00ab\u00a0users\u00a0\u00bb<\/i>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On pourrait affirmer qu&rsquo;il s&rsquo;agit de l&rsquo;un des atouts les plus importants d&rsquo;une start-up. Les cyniques ont du mal \u00e0 croire qu&rsquo;\u00a0<a href=\"http:\/\/instagram.com\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Instagram<\/a>\u00a0(une application de partage de photos\u00a0!) ait \u00e9t\u00e9 rachet\u00e9e pour\u00a0<a href=\"http:\/\/thenextweb.com\/facebook\/2012\/10\/24\/final-cost-to-facebook-to-purchase-instagram-715-million\/\" target=\"_tabs\" rel=\"noopener noreferrer\">715 millions de dollars par Facebook<\/a>\u00a0ou que Mailbox, un client de messagerie mobile pour Gmail (et encore en version b\u00eata \u00e0 bien des \u00e9gards), aurait \u00e9t\u00e9\u00a0<a href=\"http:\/\/techcrunch.com\/2013\/03\/15\/mailbox-cost-dropbox-around-100-million\/\" target=\"_tabs\" rel=\"noopener noreferrer\">rachet\u00e9 pour pr\u00e8s de 100 millions de dollars par Dropbox<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette vision cynique r\u00e9sulte souvent d&rsquo;une focalisation excessive sur le produit ou la technologie, ce qui pousse facilement \u00e0 consid\u00e9rer ces valorisations comme absurdes. Cependant, il faut \u00e9galement tenir compte de la valeur de tous ces utilisateurs et de la croissance de cette base d&rsquo;utilisateurs. Ces valorisations astronomiques sont toujours associ\u00e9es \u00e0 un produit dot\u00e9 d&rsquo;une base d&rsquo;utilisateurs vaste et en croissance rapide. Il est donc logique que maintenir \u00e0 jour votre table d&rsquo;utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. Bien s\u00fbr, le plus difficile est de g\u00e9n\u00e9rer cette croissance\u2026 Vous devrez donc\u00a0<a href=\"http:\/\/www.kalzumeus.com\/2012\/12\/21\/i-wrote-a-book-on-conversion-optimization-for-software-companies\/\" target=\"_tabs\" rel=\"noopener noreferrer\">payer pour obtenir ces informations<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce conseil sur la \u00ab\u00a0partie facile\u00a0\u00bb est cependant gratuit. Dans cet article, je vais vous pr\u00e9senter une bonne m\u00e9thodologie pour maintenir \u00e0 jour les adresses email de vos utilisateurs, \u00e0 une \u00e9poque o\u00f9 de nombreuses personnes poss\u00e8dent plusieurs adresses, y compris des adresses jetables pour certains services.<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-5311\"><p class=\"h5 m-0\" id=\"toc-title-5311\">Table des mati\u00e8res<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#logique-dapplication-pour-inviter-lutilisateur-a-mettre-a-jour-son-adresse-email\">Logique d&rsquo;application pour inviter l&rsquo;utilisateur \u00e0 mettre \u00e0 jour son adresse email<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#envoyer-des-emails-de-facturation-mensuels-avec-heroku-scheduler\">Envoyer des emails de facturation mensuels avec Heroku Scheduler<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#recevoir-des-notifications-demails-avec-rebond\">Recevoir des notifications d&#8217;emails avec rebond<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#afficher-un-ecran-pour-inviter-lutilisateur-a-mettre-a-jour-son-email\">Afficher un \u00e9cran pour inviter l&rsquo;utilisateur \u00e0 mettre \u00e0 jour son email<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Logique d&rsquo;application pour inviter l&rsquo;utilisateur \u00e0 mettre \u00e0 jour son adresse email<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque vous envoyez un email \u00e0 une adresse email qui n&rsquo;existe plus, le destinataire (par exemple Gmail ou Yahoo) vous renverra un rebond. En analysant ces rebonds, votre application peut r\u00e9agir de mani\u00e8re appropri\u00e9e, cr\u00e9ant ainsi une excellente exp\u00e9rience utilisateur tout en gardant votre base de donn\u00e9es client \u00e0 jour. Cet article pr\u00e9sente un exemple d&rsquo;application construite sur Heroku qui utilise Mailgun pour \u00e9couter ces emails avec rebond, afin que les utilisateurs avec des adresses email erron\u00e9es puissent continuer \u00e0 recevoir les emails de facturation mensuels. Cette m\u00eame logique pourrait s&rsquo;appliquer \u00e0 n&rsquo;importe lequel de vos emails, garantissant ainsi que vos utilisateurs restent engag\u00e9s et inform\u00e9s de l&rsquo;actualit\u00e9 de votre entreprise par email.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"450\" height=\"750\" src=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2019\/07\/image.png\" alt=\"Flux de travail pour garder les contacts \u00e0 jour : un processus en 7 \u00e9tapes pour g\u00e9rer les emails en rebond et inciter les utilisateurs \u00e0 effectuer des mises \u00e0 jour\" class=\"wp-image-11470\" srcset=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2019\/07\/image.png 450w, https:\/\/www.mailgun.com\/wp-content\/uploads\/2019\/07\/image-180x300.png 180w\" sizes=\"(max-width: 450px) 100vw, 450px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai cr\u00e9\u00e9 un site de d\u00e9monstration pour cet article et rendu le code source disponible sur\u00a0<a href=\"https:\/\/github.com\/poiyzy\/mailgun_example\" target=\"_tabs\" rel=\"noopener noreferrer\">GitHub<\/a>. Cette d\u00e9mo guide les personnes d\u00e9butantes tout au long du processus de configuration de cette fonctionnalit\u00e9. Cliquez\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api-bounces.html\" target=\"_tabs\" rel=\"noopener noreferrer\">ici<\/a>\u00a0si vous souhaitez passer directement \u00e0 l&rsquo;int\u00e9gration de webhooks de rebond dans votre application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Envoyer des emails de facturation mensuels avec Heroku Scheduler<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour envoyer des factures mensuelles \u00e0 vos utilisateurs, vous devrez \u00e9crire du code pour\u00a0:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>D\u00e9ployer des emails de facturation personnalis\u00e9s aupr\u00e8s de vos centaines, milliers ou millions de clients et clientes.<\/li>\n\n\n\n<li>Planifier concr\u00e8tement le d\u00e9ploiement de ces emails.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Examinons chacun de ces points.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><i>D\u00e9ployer des emails de facturation personnalis\u00e9s<\/i><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour les besoins de ce tutoriel, je pars du principe que vous poss\u00e9dez d\u00e9j\u00e0 un compte Mailgun. \u00c0 partir de l\u00e0, vous devrez envoyer votre liste de clients \u00e0 Mailgun, avec toutes les variables que vous souhaitez ins\u00e9rer dynamiquement dans les emails sous forme de fichier JSON, ainsi que le corps HTML ou texte de l&#8217;email. Voici le code.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    class MailgunGateway include Rails.application.routes.url_helpers def send_batch_message(users) RestClient.post(messaging_api_end_point, from: &quot;Mailgun Demo &quot;, to: users.map(&amp;:email).join(&quot;, &quot;), subject: &quot;Monthly Billing Info&quot;, html: billing_info_text, :&quot;h:Reply-To&quot; =&gt; &quot;billing@#{ENV[&quot;mailgun_domain_name&quot;]}&quot;, :&quot;recipient-variables&quot; =&gt; recipient_variables(billing_recipients) ) end private def api_key @api_key ||= ENV[&quot;mailgun_api_key&quot;] end def messaging_api_end_point @messaging_api_end_piont ||= &quot;https:\/\/api:#{api_key}@api.mailgun.net\/v2\/#{ENV[&quot;mailgun_domain_name&quot;]}\/messages&quot; end def billing_recipients @users ||= User.where(locked: false) end def recipient_variables(recipients) vars = recipients.map do |recipient| &quot;&quot;#{recipient.email}&quot;: {&quot;name&quot;:&quot;#{recipient.fullname}&quot;}&quot; end &quot;{#{vars.join(&#039;, &#039;)}}&quot; end def billing_info_text &lt;&lt;-EMAIL  Hi %recipient.name%, &lt;p&gt; Your bill for the current month is now available, please click on &lt;br \/&gt; #{billing_url} &lt;br \/&gt; to see details. &lt;\/p&gt; &lt;p&gt;Reply to this email directly&lt;\/p&gt;  EMAIL end end\r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Examinons ce que nous avons fait.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans la m\u00e9thode\u00a0<i>sendbatchmessages<\/i>, nous utilisons des variables de destinataire afin de pouvoir d\u00e9finir des variables pour personnaliser chaque email. Vous remarquerez que nous ins\u00e9rons le pr\u00e9nom de l&rsquo;utilisateur dans l&#8217;email. Vous pouvez r\u00e9diger un email de facturation qui inclut des d\u00e9tails tels que le num\u00e9ro de compte, le compte de facturation, ou tout ce que vous souhaitez, mais je pr\u00e9f\u00e8re faire simple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><i>Envoyer automatiquement des emails de facturation mensuels avec Heroku Scheduler<\/i><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois notre m\u00e9thode pour cr\u00e9er et d\u00e9ployer des emails via Mailgun pr\u00eate, nous devons \u00e9crire du code qui d\u00e9clenche automatiquement cette m\u00e9thode. J&rsquo;ai choisi de d\u00e9ployer cette application sur Heroku et j&rsquo;utilise Heroku Scheduler car cet outil fait l&rsquo;affaire, est un module compl\u00e9mentaire gratuit et est facile \u00e0 int\u00e9grer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heroku Scheduler ex\u00e9cutera une t\u00e2che Rake sp\u00e9cifi\u00e9e \u00e0 une heure d\u00e9finie. Ici, nous devons donc cr\u00e9er une t\u00e2che Rake pour envoyer des emails de facturation \u00e0 l&rsquo;aide de Mailgun dans\u00a0<i>lib\/tasks\/scheduler.rake<\/i>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout d&rsquo;abord, lorsque nous envoyons des factures aux utilisateurs, nous devons trouver les adresses email des clients \u00e0 facturer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans le sch\u00e9ma de base de donn\u00e9es tr\u00e8s simple de cet exemple d&rsquo;application, nous avons un attribut\u00a0<i>:locked<\/i>\u00a0qui est d\u00e9fini sur True lorsqu&rsquo;un email a d\u00e9j\u00e0 fait l&rsquo;objet d&rsquo;un rebond (nous y reviendrons plus bas). Notre requ\u00eate r\u00e9cup\u00e8re donc simplement tous nos utilisateurs pour lesquels ce champ est d\u00e9fini sur False.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour envoyer l&#8217;email, j&rsquo;utilise Mailgun\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/user_manual.html?highlight=batch%20sending#batch-sending\" target=\"_tabs\" rel=\"noopener noreferrer\">Envoi par lot<\/a>. Le nombre maximum de destinataires autoris\u00e9s par appel API \u00e9tant de 1\u00a0000, nous utilisons\u00a0<i>findinbatches<\/i>\u00a0pour envoyer les emails de facturation \u00e0 Mailgun par lots de 1\u00a0000 destinataires.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    desc &quot;This task is called by the Heroku scheduler add-on&quot;\r\ntask :send_billing_info =&gt; :environment do\r\n  if DateTime.now.mday == 1\r\n    User.where(locked: false).find_in_batches(batch_size: 1000) do |group|\r\n      MailgunGateway.new.send_batch_message(group)\r\n    end\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\">Le param\u00e8tre \u00ab\u00a0FREQUENCY\u00a0\u00bb de Heroku Scheduler ne disposant que de trois options (\u00ab\u00a0daily, hourly, every 10 mins\u00a0\u00bb), nous devons v\u00e9rifier si le jour actuel est le premier jour du mois en utilisant\u00a0<code>if DateTime.now.mday == 1.<\/code>\u00a0Si c&rsquo;est le cas, l&#8217;email est envoy\u00e9. Sinon, aucun email n&rsquo;est envoy\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recevoir des notifications d&#8217;emails avec rebond<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un email fait l&rsquo;objet d&rsquo;un rebond, Mailgun envoie un POST via le webhook de rebond \u00e0 notre application. Vous devez d\u00e9finir l&rsquo;URL de rappel sous \u00ab\u00a0Bounces\u00a0\u00bb dans le panneau de configuration de Mailgun. Dans cette d\u00e9mo, mon URL de rappel est\u00a0<code>\"http:\/\/mailgun-demo.herokuapp.com\/api\/bounced_mails\"<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque l&rsquo;application re\u00e7oit la notification de rebond, elle recherche l&rsquo;adresse email dans la base de donn\u00e9es client et d\u00e9finit le statut de l&rsquo;utilisateur sur \u00ab\u00a0locked\u00a0\u00bb, de sorte que l&rsquo;application n&rsquo;enverra pas d&#8217;email de facturation \u00e0 cet utilisateur tant qu&rsquo;il n&rsquo;aura pas mis \u00e0 jour son adresse email.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    class Api::BouncedMailsController &lt; ApplicationController\r\n  skip_before_filter :verify_authenticity_token\r\n  def create\r\n    if verify(ENV[&quot;mailgun_api_key&quot;], params[:token], params[:timestamp], params[:signature])\r\n      user = User.find_by_email(params[:recipient])\r\n      if user &amp;&amp; params[:event] == &quot;bounced&quot;\r\n        user.lock!\r\n      end\r\n      head(200)\r\n    end\r\n  end\r\n  private\r\n  def verify(api_key, token, timestamp, signature)\r\n    signature == OpenSSL::HMAC.hexdigest(\r\n      OpenSSL::Digest::Digest.new(&#039;sha256&#039;),\r\n      api_key,\r\n      &#039;%s%s&#039; % [timestamp, token])\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\">La m\u00e9thode\u00a0<i>user.lock!<\/i>\u00a0sert \u00e0 d\u00e9finir le statut de l&rsquo;utilisateur sur \u00ab\u00a0locked\u00a0\u00bb, afin que notre t\u00e2che Rake n&rsquo;envoie jamais d&#8217;emails \u00e0 cet utilisateur. Cette m\u00e9thode est d\u00e9finie dans le mod\u00e8le User.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    class User &lt; ActiveRecord::Base\r\n  \u2026\r\n  def lock!\r\n    self.locked = true\r\n    save(validate: false)\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\">La m\u00e9thode\u00a0<i>verify<\/i>\u00a0sert \u00e0 v\u00e9rifier que le webhook provient bien de Mailgun, faute de quoi n&rsquo;importe qui pourrait envoyer un faux POST pour verrouiller les utilisateurs de votre application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour plus de d\u00e9tails sur la configuration des webhooks, vous pouvez lire la documentation de Mailgun \u2013\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api-webhooks.html\" target=\"_tabs\" rel=\"noopener noreferrer\">\u00c9v\u00e9nements\/Webhooks<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, nous renvoyons un en-t\u00eate 200 pour indiquer \u00e0 Mailgun que cette interaction est r\u00e9ussie, sinon Mailgun pensera que notre serveur est en panne et continuera d&rsquo;essayer d&rsquo;appeler notre webhook.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/gist.github.com\/poiyzy\/5045565#displaying-the-flash-screen-for-a-user-to-update-their-email\" target=\"_tabs\" rel=\"noopener noreferrer\"><\/a>Afficher un \u00e9cran pour inviter l&rsquo;utilisateur \u00e0 mettre \u00e0 jour son email<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois que l&rsquo;application sait quels utilisateurs ont une adresse email erron\u00e9e, nous devons leur afficher un \u00e9cran lors de leur prochaine connexion avec une invite pour v\u00e9rifier leurs informations de contact enregistr\u00e9es.<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                PHP                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"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-PHP\">\r\n                                <code id=\"code_0_content\" class=\"language-PHP\">\r\n\r\n                                    class SessionsController &lt; ApplicationController\r\n  def new\r\n    redirect_to home_path if current_user\r\n  end\r\n  def create\r\n    user = User.find_by_email(params[:email])\r\n    if user &amp;&amp; user.authenticate(params[:password])\r\n      session[:user_id] = user.id\r\n      if user.locked\r\n        flash[:error] = &quot;Your Email Address is invalid, please update it.&quot;\r\n        redirect_to edit_user_path(current_user)\r\n      else\r\n        redirect_to home_path\r\n      end\r\n    else\r\n      flash[:error] = &quot;Incorrect email or password. Please try again.&quot;\r\n      redirect_to sign_in_path\r\n    end\r\n  end\r\n  def destroy\r\n    session[:user_id] = nil\r\n    redirect_to root_path\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\">Une fois leur adresse email mise \u00e0 jour, nous red\u00e9finissons l&rsquo;attribut \u00ab\u00a0locked\u00a0\u00bb sur False afin qu&rsquo;ils continuent \u00e0 recevoir des emails.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est tout. D\u00e9sormais, lorsque les emails de vos utilisateurs font l&rsquo;objet d&rsquo;un rebond, vous pouvez les inviter \u00e0 mettre \u00e0 jour leurs informations, offrant ainsi une excellente exp\u00e9rience utilisateur tout en gardant vos donn\u00e9es client \u00e0 jour.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ce blog a \u00e9t\u00e9 r\u00e9dig\u00e9 par Roy Young. Roy, d\u00e9veloppeur Ruby qui perfectionne ses comp\u00e9tences \u00e0 la Tealeaf Academy.<\/p>\n<p>Ah, la table \u00ab\u00a0users\u00a0\u00bb.<\/p>\n","protected":false},"author":13,"featured_media":4843,"menu_order":0,"template":"","meta":{"_acf_changed":true,"footnotes":""},"blog_category":[23],"class_list":["post-24666","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-it-and-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Il est donc logique que maintenir \u00e0 jour votre table d&#039;utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Il est donc logique que maintenir \u00e0 jour votre table d&#039;utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/\",\"name\":\"Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"datePublished\":\"2026-09-16T16:56:27+00:00\",\"description\":\"Il est donc logique que maintenir \u00e0 jour votre table d'utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-IT-Engineering.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/it-and-engineering\\\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Adopter une approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails\"}]},{\"@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":"Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun","description":"Il est donc logique que maintenir \u00e0 jour votre table d'utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/","og_locale":"fr_FR","og_type":"article","og_title":"Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun","og_description":"Il est donc logique que maintenir \u00e0 jour votre table d'utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013","og_url":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/","url":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/","name":"Approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails des utilisateurs - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","datePublished":"2026-09-16T16:56:27+00:00","description":"Il est donc logique que maintenir \u00e0 jour votre table d'utilisateurs avec des informations de contact correctes soit un bon investissement pour votre entreprise. En savoir plus \u2013","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-IT-Engineering.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/blog\/it-and-engineering\/approche-basee-donnees-maintenir-jour-emails-utilisateurs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/fr\/blog\/"},{"@type":"ListItem","position":3,"name":"Adopter une approche bas\u00e9e sur les donn\u00e9es pour maintenir \u00e0 jour les emails"}]},{"@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\/blog\/24666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/users\/13"}],"version-history":[{"count":0,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog\/24666\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media\/4843"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=24666"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/blog_category?post=24666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}