L’e-mailing ou marketing par e-mail
Il existe aujourd’hui de nombreuses façons de faire la promotion de produits ou de faire passer des messages auprès d’utilisateurs ciblés sur le web. L’une d’elle s’appelle l’e-mailing, une technique de marketing direct par voie de courriers électroniques. L’e-mailing, ou marketing par e-mail, offre de nombreux avantages. Il est rapide et efficace, facile à mettre en place, il offre une liberté graphique, il permet de cibler son public, d’analyser l’impact de ses retours et surtout, son coût est modique.
Un nombre important de solutions est apparu afin de le mettre en oeuvre. Parmi les plus connues et courantes, on retrouve MailChimp, Sarbacane ou encore YMLP (YourMailingListProvider).
Chez Les-Tilleuls.coop, nous sommes régulièrement sollicités et sommes en mesure de répondre à vos différents besoins en terme de création graphique et intégration, responsive ou non, de templates pour des campagnes d’e-mailing, de rédaction de leurs contenus ou encore d’intégration des différentes solutions dans des développements.
L’API YMLP
Pour les besoins d’un projet Symfony2 récent, nous avons dû intégrer à notre application les services du fournisseur de mailing pour professionnels, YMLP (YourMailingListProvider).
YMLP fournit pour cela une API plutôt bien garnie en commandes, et, qui plus est, bien documentée (sous réserve d’avoir des identifiants), couvrant une grande partie des fonctionnalités disponibles sur l’interface web.
CoopTilleulsYmlpBundle pour Symfony2
De par nos valeurs communes et notre implication au sein de Les-Tilleuls.coop pour les logiciels libres, nous avons décidé de partager aujourd’hui avec la communauté le fruit de notre travail sous licence MIT, à savoir le développement d’un client, sous forme de bundle Symfony2, pour l’API d’YMLP : CoopTilleulsYmlpBundle v1.0.0.
Ce bundle utilise la librairie Guzzle 4 qui requière donc PHP >= 5.4. Votre projet doit également utiliser Symfony dans ses versions >= 2.2.
A noter que vous n’êtes pas obligés d’utiliser Symfony2 sous sa forme framework full-stack puisque ce bundle ne dépend que de 3 composants de celui-ci, à savoir Config, Dependency Injection et HttpKernel.
Ce bundle a été entièrement testé avec PHPSpec et a obtenu la médaille de platine sur le nouvel outil d’analyse et d’évaluation de la qualité des projets PHP, Sensiolabs Insight.
Installation
L’installation se fait très simplement à partir de Composer :
composer require tilleuls/ymlp-bundle
Il vous suffit alors d’ajouter le bundle au noyau de l’application :
<span class="c1" style="font-style: italic; color: #999988;">// app/AppKernel.php</span> <span class="k" style="font-weight: bold;">public</span> <span class="k" style="font-weight: bold;">function</span> <span class="nf" style="font-weight: bold; color: #990000;">registerBundles</span><span class="p">()</span> <span class="p">{</span> <span class="k" style="font-weight: bold;">return</span> <span class="k" style="font-weight: bold;">array</span><span class="p">(</span> <span class="c1" style="font-style: italic; color: #999988;">// ...</span> <span class="k" style="font-weight: bold;">new</span> <span class="nx">CoopTilleuls\Bundle\YmlpBundle\CoopTilleulsYmlpBundle</span><span class="p">(),</span> <span class="c1" style="font-style: italic; color: #999988;">// ...</span> <span class="p">);</span> <span class="p">}</span>
Configuration
La première étape de la configuration se passe sur l’interface web d’YMLP, dans l’onglet configuration puis le sous-onglet API. Il vous faut activer l’accès à l’API que vous pouvez aussi restreindre à certaines adresses ou plages d’adresses IP. Enregistrez vos changements, une clé API sera alors générée.
Dans le fichier de configuration de votre application Symfony2, ajoutez les entrées suivantes :
<span class="c1" style="font-style: italic; color: #999988;"># app/config/config.yml</span> <span class="l-Scalar-Plain">coop_tilleuls_ymlp</span><span class="p-Indicator">:</span> <span class="c1" style="font-style: italic; color: #999988;"># YMLP URL for API calls (default to https://www.ymlp.com/api/)</span> <span class="l-Scalar-Plain">api_url</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">https://www.ymlp.com/api/</span> <span class="c1" style="font-style: italic; color: #999988;"># Your YMLP API key (no default)</span> <span class="l-Scalar-Plain">api_key</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">YOURSECRETAPIKEY1234</span> <span class="c1" style="font-style: italic; color: #999988;"># Your YMLP username (no default)</span> <span class="l-Scalar-Plain">api_username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">tilleuls</span>
Utilisation
Le client est maintenant configuré et prêt à l’emploi. Voici un exemple d’utilisation :
<span class="k" style="font-weight: bold;">use</span> <span class="nx">CoopTilleuls\Bundle\YmlpBundle\Ymlp\Exception\YmlpException</span><span class="p">;</span> <span class="c1" style="font-style: italic; color: #999988;">// Get an instance of the YMLP API client as a service</span> <span class="nv" style="color: teal;">$ymlpClient</span> <span class="o" style="font-weight: bold;">=</span> <span class="nv" style="color: teal;">$this</span><span class="o" style="font-weight: bold;">-></span><span class="na" style="color: teal;">get</span><span class="p">(</span><span class="s1" style="color: #dd1144;">'coop_tilleuls_ymlp.client'</span><span class="p">);</span> <span class="c1" style="font-style: italic; color: #999988;">// Call the simple Ping() command of the YMLP API</span> <span class="nv" style="color: teal;">$pingResponse</span> <span class="o" style="font-weight: bold;">=</span> <span class="nv" style="color: teal;">$ymlpClient</span><span class="o" style="font-weight: bold;">-></span><span class="na" style="color: teal;">call</span><span class="p">(</span><span class="s1" style="color: #dd1144;">'Ping'</span><span class="p">);</span> <span class="c1" style="font-style: italic; color: #999988;">// Add a new contact to one or more groups with exception handling</span> <span class="k" style="font-weight: bold;">try</span> <span class="p">{</span> <span class="nv" style="color: teal;">$contactsAddResponse</span> <span class="o" style="font-weight: bold;">=</span> <span class="nv" style="color: teal;">$ymlpClient</span><span class="o" style="font-weight: bold;">-></span><span class="na" style="color: teal;">call</span><span class="p">(</span><span class="s1" style="color: #dd1144;">'Contacts.Add'</span><span class="p">,</span> <span class="k" style="font-weight: bold;">array</span><span class="p">(</span><span class="s1" style="color: #dd1144;">'Email'</span> <span class="o" style="font-weight: bold;">=></span> <span class="s1" style="color: #dd1144;">'baptiste@les-tilleuls.coop'</span><span class="p">,</span> <span class="s1" style="color: #dd1144;">'GroupID'</span> <span class="o" style="font-weight: bold;">=></span> <span class="mi" style="color: #009999;">1</span><span class="p">));</span> <span class="p">}</span> <span class="k" style="font-weight: bold;">catch</span> <span class="p">(</span><span class="nx">YmlpException</span> <span class="nv" style="color: teal;">$e</span><span class="p">)</span> <span class="p">{</span> <span class="c1" style="font-style: italic; color: #999988;">//...</span> <span class="p">}</span>
La méthode call()
retourne un tableau contenant la réponse de l’API ou déclenche une exception de type \CoopTilleuls\Bundle\YmlpBundle\Ymlp\Exception\YmlpException
.
Liens
- CoopTilleulsYmlpBundle sur Github
- CoopTilleulsYmlpBundle sur Packagist
- CoopTilleulsYmlpBundle sur KnpBundles
- CoopTilleulsYmlpBundle sur Travis
- CoopTilleulsYmlpBundle sur Sensiolabs Insight
Vous pouvez également retrouver cette documentation sur le dépôt Github. N’hésitez pas à apporter vos contributions au projet ! Bon e-mailing.