Mandrill, envoie et tracking d’emails transactionnels

mandrillMandrill, c’est quoi ?

Mandrill est une plate-forme d’envoie d’emails transactionnels. Un email transactionnel, c’est l’inverse d’une newsletter : il s’agit d’un mail envoyé à une seul destinataire, pour attester d’une transaction ou d’un évènement (exemple : email d’inscription, de confirmation de commande, une facture)1.

Mandrill est en fait un service proposé par Mailchimp, le service de newsletter.

L’avantage par rapport à la classique fonction mail de PHP, c’est l’assurance de la déliverabilité du message, mais surtout le tracking de celui-ci (email envoyés, reçus, ouverts).

Voici comment mettre en place l’envoie d’un email en quelques étapes.

Création d’un compte.

Pas bien compliqué : rendez-vous sur le site de Mandrill. Il suffit d’une adresse email et d’un mot de passe et le tour est joué. Bien qu’il s’agit d’un service payant pour les gros volumes, une offre gratuite est disponible. Créez tout de suite une clef API. Cette clef sera utilisée chaque fois que vous utiliserez une fonction de Mandrill.

Création d’un template

On entre dans le vif du sujet. Les templates permettent la création de modèles de message. Pour créer un template, cliquez sur « Outbound » (situé dans la barre du haut), puis sur « Template » et enfin sur « Code your own ». Indiquez le nom du template, et vous accèdez directement à l’éditeur. Vous voyez alors deux champs: « Template Slug » et « Name ». Le nom vous permet de retrouver votre template dans votre espace, le « slug » permet d’utiliser ce template lors de l’envoie d’un email.

Le contenu du mail peut-être dynamique. Pour cela, ajouter mc:edit= »nom_du_paramètre » au container HTML qui contiendra le texte. Par exemple:

<div>Bonjour <span mc:edit="name">Name</span></div>

Voilà pour la mise en place. Passons à l’utilisation.

Envoyer un message

Deux options sont disponibles:

  • soit passé par les serveur SMTP de Mandrill, ce qui permet d’utiliser n’importe quel mailer (Swift, la fonction mail, …). Mandrill ajoutera alors votre contenu défini via le header du mail au template de votre choix.
  • soit passé par l’API. Technique beaucoup plus élégante et que nous allons détailler.

Utiliser une API est souvent hasardeux, mais heureusement, Mandrill a tout prévu. Ainsi, vous pouvez télécharger un wrapper (disponible dans beaucoup de langages). Télécharger le wrapper PHP ici. Ajoutez le à votre projet et en quelque ligne vous pourrez envoyer un email:

$mandrill = new \Mandrill("VOTRE_CLEF_API");
$message = new \Mandrill_Messages($mandrill);

// Préparation des champs dynamiques du template		
$param = array(array('name' => 'user', 'content' => 'Fred'));

$mandrill_message = array(
        'to' => array(
                array('email' => 'user1@email.com', 'name' => 'User 1'),
                array('email' => 'user2@email.com', 'name' => 'User 2')),
        'subject' => 'Premier mail',
        'from_email' => 'contact@email.com',
        'from_name' => 'Service client',
        'track_opens' => true);

$message->sendTemplate('SLUG_DU_TEMPLATE', $param, $mandrill_message);

One more thing

Vous pouvez accéder à la base de connaissance de Mandrill. Vous y trouverez beaucoup d’informations utile, et des exemples (dont celui-ci) au cas où la documentation de l’API ne vous suffirait pas.

: mailjet.comRetour à l’article

Publié par

gcko

#iOS developer at @applydia, former #Epitech student, «I'm am currently making your smartphone smarter»

5 réflexions au sujet de « Mandrill, envoie et tracking d’emails transactionnels »

  1. Merci pour cet article !

    Par contre, j’ai testé avec les variables et de mon côté, ça ne change pas le « mc:edit », je ne comprends pas pourquoi il ne me change pas le terme alors que j’ai fait comme sur votre article…

    1. Il faut faut que l’attribut mc:edit soit appliqué à une balise html, et que celle-ci contienne du texte. Par exemple, <div mc:edit="test"></div> ne marchera pas, alors que <div mc:edit="test"> text_a_remplacer </div> fonctionnera.

      1. C’est étrange car j’ai bien mis :
        DONNER_A_CHANGE

        Et dans mon code PHP :
        $param = array(array(‘donnee’ => ‘AUTRE chose à mettre’));

        $message -> sendTemplate(‘montemplate’, $param, $mandrill_message);

      2. C’est au niveau de la déclaration du $param qu’il y a un problème. Il faut faire un array de la façon suivante :
        $param = array(
        array(‘name’ => ‘nom du paramètre’, ‘content’ => ‘contenu qui sera inséré’),
        array(‘name’ => ‘nom du paramètre2’, ‘content’ => ‘contenu qui sera inséré2’), …
        );

Les commentaires sont fermés.