E-mailing : CoopTilleulsYmlpBundle, un client Symfony2 pour l'API YMLP

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 :

// app/AppKernel.php

public function registerBundles()
{
    return array(
        // ...
        new CoopTilleuls\Bundle\YmlpBundle\CoopTilleulsYmlpBundle(),
        // ...
    );
}

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.

ymlp-config

Dans le fichier de configuration de votre application Symfony2, ajoutez les entrées suivantes :

# app/config/config.yml

coop_tilleuls_ymlp:
    # YMLP URL for API calls (default to https://www.ymlp.com/api/)
    api_url: https://www.ymlp.com/api/
    # Your YMLP API key (no default)
    api_key: YOURSECRETAPIKEY1234
    # Your YMLP username (no default)
    api_username: tilleuls

Utilisation

Le client est maintenant configuré et prêt à l’emploi. Voici un exemple d’utilisation :

use CoopTilleuls\Bundle\YmlpBundle\Ymlp\Exception\YmlpException;

// Get an instance of the YMLP API client as a service
$ymlpClient = $this->get('coop_tilleuls_ymlp.client');

// Call the simple Ping() command of the YMLP API
$pingResponse = $ymlpClient->call('Ping');

// Add a new contact to one or more groups with exception handling
try {
    $contactsAddResponse = $ymlpClient->call('Contacts.Add', array('Email' => 'baptiste@les-tilleuls.coop', 'GroupID' => 1));
} catch (YmlpException $e) {
    //...
}

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

Vous pouvez également retrouver cette documentation sur le dépôt Github. N’hésitez pas à apporter vos contributions au projet ! Bon e-mailing. :)