{"id":18245,"date":"2026-09-03T11:49:33","date_gmt":"2026-09-03T11:49:33","guid":{"rendered":"https:\/\/www.mailgun.com\/resources\/case-studies\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/"},"modified":"2026-09-03T11:49:33","modified_gmt":"2026-09-03T11:49:33","slug":"comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves","status":"publish","type":"case-studies","link":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/","title":{"rendered":"Comment la Launch School Academy a multipli\u00e9 par 3 l&rsquo;engagement des \u00e9l\u00e8ves"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u00c0 la Tealeaf Academy, la cr\u00e9ation d&rsquo;une exp\u00e9rience \u00ab \u00c9tudier ensemble, progresser ensemble \u00bb pour nos \u00e9l\u00e8ves est au c\u0153ur de notre m\u00e9thode d&rsquo;enseignement. L&rsquo;un de nos outils principaux est le forum de discussion o\u00f9 les \u00e9l\u00e8ves posent des questions, partagent des id\u00e9es, collaborent sur des devoirs, et o\u00f9 les professeurs interviennent rapidement pour aider les \u00e9l\u00e8ves \u00e0 se d\u00e9bloquer sur des probl\u00e8mes. L&rsquo;une de nos r\u00e9centes priorit\u00e9s \u00e9tait de r\u00e9duire les frictions dans l&rsquo;utilisation du forum de discussion et d&rsquo;encourager davantage de discussions avec une notification par email compl\u00e9mentaire et un flux de travail \u00ab r\u00e9pondre \u00e0 l&#8217;email pour publier sur le forum de discussion \u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l&rsquo;aide de l&rsquo;API Routes de Mailgun, l&rsquo;activit\u00e9 sur notre forum de discussion a tripl\u00e9, et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse en une heure, parfois m\u00eame en quelques minutes, et les \u00e9l\u00e8ves sont capables de passer \u00e0 la s\u00e9rie de t\u00e2ches suivante beaucoup plus rapidement.<\/b><b><i>\u00a0<\/i><\/b>Voici comment nous avons proc\u00e9d\u00e9 :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notre flux de travail se pr\u00e9senterait comme suit :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Lorsqu&rsquo;une publication (tr\u00e8s probablement, une question) est cr\u00e9\u00e9e, tous les participants au cours sont inform\u00e9s par une notification par email<\/li>\n\n\n\n<li>Les participants au cours peuvent r\u00e9pondre aux notifications par email directement depuis leur bo\u00eete de r\u00e9ception d&#8217;emails, sans avoir \u00e0 se connecter au cours<\/li>\n\n\n\n<li>Cette r\u00e9ponse sera publi\u00e9e sur le forum de discussion en ligne et sera \u00e9galement envoy\u00e9e aux autres participants au cours, afin de maintenir la conversation en cours.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Pourquoi nous choisissons Mailgun<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;\u00e9l\u00e9ment cl\u00e9 de ce flux de travail est de recevoir et de parser les messages d&#8217;emails entrants. Nous avons examin\u00e9 plusieurs services d&#8217;emailing, et avons finalement choisi Mailgun car :<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Il est tr\u00e8s adapt\u00e9 aux d\u00e9veloppeurs \u2013 Nous sommes des d\u00e9veloppeurs, et Mailgun nous parle. Les API exposent de nombreuses options de bas niveau qui permettent des ajustements. Nous aimons les\u00a0<a href=\"https:\/\/documentation.mailgun.com\/en\/latest\/api-routes.html?highlight=routes#routes\" target=\"_tabs\" rel=\"noopener noreferrer\">routes<\/a>\u00a0en particulier \u2013 C&rsquo;est une belle couche d&rsquo;abstraction qui rend l&rsquo;int\u00e9gration avec les applications tr\u00e8s facile. (voyez comment nous l&rsquo;utilisons ci-dessous)<\/li>\n\n\n\n<li>C&rsquo;est le service le plus complet en fonctionnalit\u00e9s que nous ayons trouv\u00e9 \u2013 nous pouvons utiliser Mailgun pour les emails transactionnels, les campagnes ainsi que les listes de contacts \u2013 c&rsquo;est agr\u00e9able de n&rsquo;avoir qu&rsquo;un seul fournisseur de services pour g\u00e9rer tout ce dont nous avons besoin.<\/li>\n\n\n\n<li>Le prix est raisonnable et la possibilit\u00e9 de mettre \u00e0 niveau vers une adresse IP d\u00e9di\u00e9e et un DKIM personnalis\u00e9 est appr\u00e9ciable, m\u00eame si nous n&rsquo;en avons pas encore besoin.<\/li>\n\n\n\n<li>Le support est de premier ordre. Il y a un chat en direct o\u00f9 je peux parler directement de mes probl\u00e8mes \u00e0 leurs d\u00e9veloppeurs et il nous a \u00e9t\u00e9 tr\u00e8s utile pour les r\u00e9soudre.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Mise en place de l&rsquo;infrastructure d&#8217;email<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>La premi\u00e8re \u00e9tape a \u00e9t\u00e9 de cr\u00e9er un nouveau domaine sur Mailgun. Dans notre cas, il s&rsquo;agit de messaging.gotealeaf.com que nous utilisons pour l&rsquo;envoi et la r\u00e9ception d&#8217;emails.<\/li>\n\n\n\n<li>Ensuite, nous avons cr\u00e9\u00e9 un MailgunGateway comme wrapper pour l&rsquo;API de Mailgun. Ce wrapper prend en charge toutes nos interactions avec Mailgun via notre compte. Ici, nous utilisons l&rsquo;API send_batch_messages de Mailgun pour envoyer des emails HTML. Elle nous permet d&rsquo;envoyer un message \u00e0 plusieurs destinataires avec un appel d&rsquo;API unique. Nous conservons notre cl\u00e9 API en tant que variables d&rsquo;environnement sur le serveur pour plus de s\u00e9curit\u00e9. Il existe \u00e9galement un filtre de livraison simple pour qu&rsquo;aucun email ne soit envoy\u00e9 dans l&rsquo;environnement de d\u00e9veloppement ; Sur l&rsquo;environnement de staging, tous les emails sont envoy\u00e9s \u00e0 Chris (mon co-fondateur) et \u00e0 moi-m\u00eame, ce qui nous permet de tester des choses sans craindre d&rsquo;envoyer du spam \u00e0 nos utilisateurs ; Ce n&rsquo;est que sur l&rsquo;environnement de production que les emails sont envoy\u00e9s aux utilisateurs r\u00e9els.<\/li>\n<\/ul>\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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    class MailgunGateway  \r\n  def send_batch_message(options={})\r\n    RestClient.post(messaging_api_end_point,\r\n        from: default_sender,\r\n        to: delivery_filter(options[:to]),\r\n        subject: options[:subject],\r\n        html: options[:body],\r\n        :&quot;h:Reply-To&quot; =&gt; options[:reply_to],\r\n        :&quot;recipient-variables&quot; =&gt; options[:recipient_variables]\r\n        ) if Rails.env.staging? || Rails.env.production?\r\n    end\r\n  end\r\n\r\n  private\r\n\r\n  def default_sender\r\n    &quot;Tealeaf Academy &quot;\r\n  end\r\n\r\n  def api_key\r\n    @api_key ||= ENV[&#039;mailgun_api_key&#039;]\r\n  end\r\n\r\n  def messaging_api_end_point\r\n    @messaging_api_end_piont ||= \r\n        &quot;https:\/\/api:#{api_key}@api.mailgun.net\/v2\/messaging.gotealeaf.com\/messages&quot;\r\n  end\r\n\r\n  def delivery_filter(emails)\r\n    Rails.env.production? ? emails : &quot;kevin@gotealeaf.com, chris@gotealeaf.com&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<h2 class=\"wp-block-heading\">Envoyer des notifications par email pour un nouveau post ou commentaire<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois qu&rsquo;un post ou un commentaire est cr\u00e9\u00e9, nous envoyons une notification par email \u00e0 tous les participants du cours. Nous envoyons des emails de mani\u00e8re synchrone pour le moment, mais \u00e0 mesure que nous aurons plus d&rsquo;utilisateurs, nous voudrons probablement d\u00e9l\u00e9guer cela \u00e0 une t\u00e2che d&rsquo;arri\u00e8re-plan.<\/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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    Launch School Code 1class Courses::PostsController &lt; AuthenticatedController  \r\n  expose(:course)\r\n  expose(:posts) { course.posts }\r\n  expose(:post)\r\n\r\n  def create\r\n    post.user = current_user\r\n    post.save\r\n    CourseNotifier.new(course).notify_course_participants_on_new_discussion(post)\r\n    redirect_to course_home_path(course)\r\n  end\r\n\r\n  ...\r\nend\r\n\r\nclass Courses::Posts::CommentsController &lt; AuthenticatedController  \r\n  expose(:course)\r\n  expose(:posts) { course.posts }\r\n  expose(:post)\r\n  expose(:comments) { post.comments }\r\n  expose(:comment)\r\n\r\n  def create\r\n    comment.user = current_user\r\n    comment.save\r\n    CourseNotifier.new(course).notify_course_participants_on_new_discussion(comment)\r\n    redirect_to course_home_path(course)\r\n  end\r\n\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\">CourseNotifier est la classe o\u00f9 nous pla\u00e7ons notre logique sp\u00e9cifique \u00e0 l&rsquo;application concernant les notifications. Notez que MailgunGateway est inject\u00e9 comme passerelle par d\u00e9faut \u2013 cela date du temps o\u00f9 nous utilisions plusieurs services d&#8217;emailing pour les campagnes, les listes et les emails transactionnels. C&rsquo;est moins n\u00e9cessaire maintenant que nous avons consolid\u00e9 tous les besoins de livraison d&#8217;emails vers 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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    class CourseNotifier\r\n\r\n  attr_reader :course, :gateway\r\n\r\n  def initialize(course, gateway=MailgunGateway.new)\r\n    @course = course\r\n    @gateway = gateway\r\n  end\r\n\r\n  def notify_course_participants_on_new_discussion(discussion)\r\n    gateway.send_batch_message(\r\n      to: notification_recipients(discussion).map(&amp;:email).join(&quot;, &quot;),\r\n      subject: notification_subject(discussion),\r\n      body: discussion_notification_text(discussion),\r\n      reply_to: reply_to_address(discussion),\r\n      recipient_variables: recipient_variables(\r\n        notification_recipients(discussion)\r\n      )\r\n    )\r\n  end\r\n\r\n  ...\r\n\r\n  private\r\n\r\n  def notification_recipients(discussion)\r\n    course.participants.reject {|participant| participant.email == discussion.user.email }\r\n  end\r\n\r\n  def notification_subject(discussion)\r\n    discussion.is_a?(Post) ?\r\n    &quot;[Tealeaf Academy] #{discussion.user.name} Posted a New Message on the Discussion Board&quot; :\r\n    &quot;[Tealeaf Academy] #{discussion.user.name} Replied to a Message on the Discussion Board&quot;\r\n  end\r\n\r\n  def reply_to_address(discussion)\r\n    &quot;reply+#{discussion.token}@messaging.gotealeaf.com&quot;\r\n  end\r\n\r\n  def recipient_variables(recipients)\r\n    vars = recipients.map do |recipient|\r\n      &quot;&quot;#{recipient.email}&quot;: {&quot;name&quot;:&quot;#{recipient.name}&quot;}&quot;\r\n    end\r\n    &quot;{#{vars.join(&#039;, &#039;)}}&quot;\r\n  end\r\n\r\n  def discussion_notification_text(discussion)\r\n&lt;&lt;-EMAIL\r\n\r\n\r\nHi %recipient.name%,\r\n\r\n&lt;p&gt;#{discussion.user.name} says on the course dicussion board:&lt;\/p&gt;\r\n\r\n&quot;#{discussion.text}&quot;\r\n&lt;br \/&gt;\r\n&lt;p&gt;Reply to this email directly or &lt;a href=&quot;http:\/\/www.gotealeaf.com\/courses\/#{course.slug}\/home&quot;&gt;view it on the discussion board&lt;\/a&gt;&lt;\/p&gt;\r\n\r\nEMAIL  \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\">L&rsquo;adresse reply<i>to<\/i>address est l&rsquo;endroit o\u00f9 nous ins\u00e9rons le jeton du post dans l&rsquo;en-t\u00eate \u00ab Reply-To \u00bb. Le contenu des emails est assez simple, nous le pla\u00e7ons donc simplement ici dans la classe. Si nous avions un style d&#8217;email plus \u00e9labor\u00e9, nous aurions utilis\u00e9 le rendu de mod\u00e8le pour le g\u00e9rer. Avec l&rsquo;API send<i>batch<\/i>message de Mailgun, nous pouvons appeler l&rsquo;API une seule fois pour envoyer \u00e0 plusieurs destinataires, et la m\u00e9thode recipient_variables est l&rsquo;endroit o\u00f9 nous personnalisons les messages d&#8217;email pour chaque destinataire afin d&rsquo;inclure leurs noms pour ajouter une touche personnelle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gestion des messages entrants dans l&rsquo;application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En nous rendant sur Mailgun, sous \u00ab Routes \u00bb dans le panneau de configuration, nous avons cr\u00e9\u00e9 la route suivante :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Expression de filtre : match_recipient(\u201creply+(.*)@messaging.gotealeaf.com\u201d)<\/li>\n\n\n\n<li>Action : forward(\u201chttp:\/\/www.gotealeaf.com\/api\/incoming_messages\/?post_token=1\u201d)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&rsquo;un utilisateur r\u00e9pond \u00e0 un email, il y r\u00e9pond \u00e0 une adresse email telle que \u00ab reply+fj42gq4v@messaging.gotealeaf.com \u00bb, et cette route transf\u00e9rera l&#8217;email \u00e0 un webhook que nous exposons pour g\u00e9rer les messages entrants.<\/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                                HTML                            <\/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-markup\">\r\n                                <code id=\"code_0_content\" class=\"language-markup\">\r\n\r\n                                    class Api::IncomingMessagesController &lt; ApplicationController  \r\n  skip_before_filter :verify_authenticity_token\r\n\r\n  def create\r\n    user = User.where(email: params[&#039;sender&#039;]).first\r\n    post = Post.where(token: params[&#039;post_token&#039;]).first\r\n    text = params[&quot;stripped-text&quot;]\r\n    if post &amp;&amp; user &amp;&amp; text.present?\r\n      comment = post.comments.create(user: user, text: text)\r\n      CourseNotifier.new(post.course).notify_course_participants_on_new_discussion(comment)\r\n    end\r\n    head(200)\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\">Ici, nous utilisons l&#8217;email de l&rsquo;exp\u00e9diteur pour trouver l&rsquo;auteur, et utilisons le jeton du post pour trouver le post sous lequel cette r\u00e9ponse doit \u00eatre regroup\u00e9e. Mailgun nous donne le texte d\u00e9pouill\u00e9 tr\u00e8s utile qui supprime la partie du message original pour ne contenir que la r\u00e9ponse r\u00e9elle ! En fin de compte, nous renvoyons un en-t\u00eate 200 pour dire \u00e0 Mailgun que cette interaction est r\u00e9ussie, sinon Mailgun pensera que notre serveur est en panne et continuera fid\u00e8lement d&rsquo;essayer d&rsquo;appeler notre webhook.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le r\u00e9sultat de la mise en \u0153uvre de ce flux de travail est impressionnant : l&rsquo;activit\u00e9 sur notre forum de discussion a tripl\u00e9, et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l&rsquo;heure, parfois m\u00eame en quelques minutes, les \u00e9tudiants peuvent passer \u00e0 la s\u00e9rie de t\u00e2ches suivante beaucoup plus rapidement et nous sommes tr\u00e8s satisfaits de la fa\u00e7on dont cela s&rsquo;est pass\u00e9.<\/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-d4e5cb9595cfe67f96b42a72e4e187e5\">\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-d4e5cb9595cfe67f96b42a72e4e187e5\">\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-3370\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"terms\">\r\n                                    <label for=\"formSubscriptionAcceptance-terms-3370\" 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-7572\" class=\"form-check-input\"\r\n                                        type=\"checkbox\" name=\"privacy\">\r\n                                    <label for=\"formSubscriptionAcceptance-privacy-7572\" 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 a \u00e9t\u00e9 \u00e9crit par Kevin Wang, instructeur en chef \u00e0 la Tealeaf Academy (Launch School). La Tealeaf Academy est une \u00e9cole en ligne pour d\u00e9veloppeurs, et propose des bootcamps en ligne intensifs bas\u00e9s sur des projets autour du d\u00e9veloppement web. Si vous pensez que cet article est utile, vous devriez aller voir ce qu&rsquo;ils font !<\/p>\n","protected":false},"author":90,"featured_media":8232,"template":"","meta":{"_acf_changed":true},"class_list":["post-18245","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 la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun<\/title>\n<meta name=\"description\" content=\"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l&#039;aide de l&#039;API Mailgun Routes, l&#039;activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l&#039;heure. En savoir plus\" \/>\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-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comment la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l&#039;aide de l&#039;API Mailgun Routes, l&#039;activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l&#039;heure. En savoir plus\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/\" \/>\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-LaunchSchool.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=\"5 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-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/\",\"name\":\"Comment la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-LaunchSchool.png\",\"datePublished\":\"2026-09-03T11:49:33+00:00\",\"description\":\"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l'aide de l'API Mailgun Routes, l'activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l'heure. En savoir plus\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-LaunchSchool.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Mailgun-Case-Study-LaunchSchool.png\",\"width\":592,\"height\":368},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/fr\\\/ressources\\\/etudes-de-cas\\\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\\\/#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 la Launch School Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves\"}]},{\"@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 la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun","description":"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l'aide de l'API Mailgun Routes, l'activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l'heure. En savoir plus","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-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/","og_locale":"fr_FR","og_type":"article","og_title":"Comment la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun","og_description":"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l'aide de l'API Mailgun Routes, l'activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l'heure. En savoir plus","og_url":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/","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-LaunchSchool.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/","url":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/","name":"Comment la Tealeaf Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-LaunchSchool.png","datePublished":"2026-09-03T11:49:33+00:00","description":"Une fois que nous avons impl\u00e9ment\u00e9 le code ci-dessous \u00e0 l'aide de l'API Mailgun Routes, l'activit\u00e9 sur notre forum de discussion a tripl\u00e9 et les questions obtiennent d\u00e9sormais g\u00e9n\u00e9ralement une r\u00e9ponse dans l'heure. En savoir plus","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-LaunchSchool.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/01\/Mailgun-Case-Study-LaunchSchool.png","width":592,"height":368},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/fr\/ressources\/etudes-de-cas\/comment-la-tealeaf-academy-a-multiplie-par-3-l-engagement-des-eleves\/#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 la Launch School Academy a multipli\u00e9 par 3 l\u2019engagement des \u00e9l\u00e8ves"}]},{"@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\/18245","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\/8232"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/fr\/wp-json\/wp\/v2\/media?parent=18245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}