Les e-mails transactionnels avec Mandrill : Comme une lettre à la poste !

Lors du développement d’un site ou d’une application web quelconque, très souvent vous serez amenés à devoir développer ce que l’on appelle des e-mails transactionnels. Ces derniers sont des e-mails attendus par l’utilisateur (confirmation d’inscription, …), et non pas quelque chose qu’ils découvrent (comme une newsletter par exemple).

Pourquoi Mandrill ?

Vous connaissez peut-être MailChimp, cette application web de gestion de newsletter. Mandrill est en fait son petit frère et permet de gérer des e-mails transactionnels. Et comme son grand frère, l’application Mandrill possède un tas d’avantages et est très facile d’utilisation, ainsi que fiable. On peut la séparer en deux parties : L’interface web qui permet d’analyser et de configurer la façon de fonctionner du service, et l’API qui permet de relier votre application à ce service.
Mais d’ailleurs, quel service ? En fait, à la base Mandrill est un service de SMTP (Simple Mail Transfer Protocol) très poussé. Voyons plus en détails ses avantages.

Une mise en place éclair et « gratuite »

Avant tout, il faut créer un compte, et… C’est à peu près tout. De là, vous pouvez d’ores-et-déjà profiter du service primaire de SMTP en vous rendant dans la partie « SMTP & API Credentials » (la roue dentée en haut à droite du dashboard), créer une clef API (qui servira de mot de passe pour votre SMTP) et voilà. Le prix ? Tant que vous ne dépassez pas 12 000 e-mails par mois (à raison de 500 e-mails par heure maximum), le service est gratuit. Vous comprendrez assez vite que ce service est largement suffisant pour la majorité des sites et applications web modestes.

Le système de templates

Les templates, déjà présents sur MailChimp, s’avèrent être un outil indispensable pour tous vos e-mails, et Mandrill ne fera rien de plus que de vous faciliter la vie. Vous pouvez soit directement coder dans l’interface web de Mandrill, ou bien coder dans votre éditeur de code préféré et importer le tout sur l’interface web. Mandrill met alors à votre disposition des variables (eh oui sinon ça ne serait pas un système de template) que vous pouvez créer et réutiliser à l’infini. Leur syntaxe est la suivante : *|VARIABLE|* Si vous avez déjà utilisé MailChimp, celle ci sera familière pour vous. Vous pouvez ensuite remplir ces variables dans votre code grâce à l’API de Mandrill.

L’API de Mandrill

Mandrill possède sa propre API qui est relativement simple d’utilisation. Elle permet de faire beaucoup de choses, mais ici nous allons parler de sa fonction principale, celle de l’envoi en fonction d’un template. Avant de pouvoir utiliser n’importe quelle adresse e-mail pour vos envois, il sera également nécessaire de faire vérifier votre domaine, ce qui n’est pas très compliqué en soit, la documentation est assez claire à ce sujet.

Vous aurez alors besoin d’une clef d’API et d’un template prêt à être utilisé sur l’interface web. Pour en créer une => La roue dentée => SMTP & API Credentials.

$mandrill = new Mandrill($apiKey);

Vous pouvez ensuite configurer comme bon vous semble votre e-mail, et dans notre exemple, le champ le plus important est celui de « global_merge_vars » qui contient un tableau, et dans ce dernier un tableau pour chaque variable que vous voulez insérer dans votre template.

$message = array(
'subject' => 'Bonjour, '. $prenom,
'from_email' => 'hello@camerano.fr',
'from_name' => 'Vincent Camerano',
'to' => array(
array(
'email' => $email,
'type' => 'to'
)
),

'headers' => array('Reply-To' => 'hello@camerano.fr'),
'important' => false,
'track_opens' => true,
'track_clicks' => true,
'merge' => true,
'global_merge_vars' => array(
array( // Ici la merge var *|PRENOM|*
'name' => 'PRENOM',
'content' => $prenom
),

array( // Ici la merge var *|NOM|*
'name' => 'NOM',
'content' => $nom
),

array( // Ici la merge var *|AGE|*
'name' => 'AGE',
'content' => $age
),

array( // Ici la merge var *|PROFILE_URL|*
'name' => 'PROFILE_URL',
'content' => $url
)

),
'tags' => array($profile_type), // On ajoute un tag qui est contenu dans "$profile_type"
'subaccount' => 'user_profiles', // On tag le tracking dans le sous compte "user_profiles" (à créer dans Mandrill)
);

$result = $mandrill->messages->sendTemplate($template_name, $template_content, $message); // Et finalement on envoi l'e-mail

Note : Lorsqu’il s’agit de débugguer, Mandrill renvoi des exceptions
propres à son API, que vous pouvez récupérer grâce à la fonction
try/catch comme ceci :

try {
// Instructions Mandrill API
} catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
// A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123'
throw $e;
}

Nous utilisons ici également quelques propriétés intéressantes pour le suivi : ‘tags’, qui permet de tagguer un e-mail envoyé. Vous pouvez ainsi classer vos e-mails envoyés dans différentes catégories, et pour faire cela dynamiquement, rien de plus simple : Une variable php contenant le tag que vous désirez, et il suffit de passer cette variable à ‘tags’, le tout englobé d’un array.

Vous pouvez également décider d’activer le tracking des opens (quand la personne ouvre l’e-mail) avec ‘track_opens’, ou des clicks (quand la personne clique sur un des liens de votre e-mail) avec ‘track_clicks’.

Si vous souhaitez analyser une partie de vos e-mails plus en détail, vous devrez également les mettre dans un sous-groupe grâce à ‘subaccount’. Pour utiliser un subaccount il faudra en créer un au préalable dans la partie Outbound => Subaccounts de l’interface Web.

Tous ces outils vous permettent ensuite, sur le dashboard, d’analyser l’efficacité de vos e-mails. Le menu ‘Reports’ de Mandrill vous proposera également de visualiser l’efficacité de vos liens individuellement, et d’analyser la répartition démographique des e-mails envoyés.

Pour finir

Mandrill est aujourd’hui un outil indispensable si vous désirez travailler avec des e-mails transactionnels, de par sa simplicité mais aussi son modèle économique très attirant pour les besoins de la majorité des applications web. Cependant, il existe très probablement d’autres tools et services qui méritent d’être évoqués, alors si vous en utilisez, faites en part !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.