API revolumail V0.3 beta


Grâce à l'API revolumail, profitez de notre plateforme d'envoi et programmez facilement des mailings Email, Fax ou SMS depuis n'importe quelle application.





1) Introduction

Pour utiliser l'API Revolumail, il faut posséder un compte revolumail, puis envoyer des requêtes HTTP en POST à www.revolumail.com.

Ces requêtes ont des paramètres obligatoires, et d'autres optionnels.
Tous les paramètres sont sensibles à la casse.

Couleurs des paramètres :

  • Obligatoire
  • Optionnel
  • Pas encore implémenté

La sandbox ('bac à sable') vous permets de tester l'API d'envoi d'email (il faut posséder un compte)
et l'API de récupération des statistiques


2) Envoi de message

http://www.revolumail.com/newmail
Méthode : POST

vous pouvez trouver un exemple d'envoi d'email en utilisant l'API en Python Ici, ou en Php Ici.

Paramètres de la requête :

Nom Valeur par défaut Choix possibles Description
login

Votre login utilisateur
password

Votre Mot de passe
name sujet
Donne un nom à la campagne de mailing, permet d'avoir accès un nom explicite pour les stats
subject

Le sujet du message, obligatoire uniquement dans le cas d'un Email,
peut contenir des champs et des filtres au même titre que le template.
Type email email, fax, sms Le type d'envoi
format json json, xml, csv,  yaml Le format des données envoyées
encoding utf-8 Le charset des données envoyées
datas

Les données, cf 2.1)
template

Modèle du message,
Utilise la syntaxe de template de django
cf 2.2)
date_send
format : YYYY/MM/JJ Date d'envoi du message si il doit être envoyé dans le futur
Si ce paramètre n'est pas renseigné, les messages seront envoyés dès que possible
tracker 1 (Oui) 0 (Non), 1 (Oui) Ajout d'une image tracker dans les email, permet de savoir quand l'utilisateur a ouvert le mail.
readreceipt 1 (Oui) 0 (Non), 1 (Oui) Demande un accusé de resption au destinataire.
sender_name nom de l'utilisateur
Nom de l'expediteur
sender_email email de l'utilisateur
Email de l'expediteur
alert_email  
Adresse email qui recevra les alertes sur les clics et desabonnements
alert_jabber

Adresse jabber qui recevra les alertes sur les clics et desabonnements


 2.1) Les données (champ 'datas')


Si le format est le json, alors les données envoyées doivent *obligatoirement* contenir un champ "email" pour les emails, ou "tel" (pour fax et sms)

exemple pour un envoi d'emails en JSON:
    [ 
        { "email" : "machin@gmail.com", "nom" : "machin" , "age" : 42 },
        { "email" : "bidule@free.fr", "nom" : "bidule" , "prenom" : "truc" }
    ]
exemple pour un envoi de faxes :
    [
        { "tel" : "0145454545", "nom" : "machin" , "age" : 42 },
        { "tel" : "0145454545", "nom" : "bidule" , "prenom" : "truc" }
    ]

NB : les guillemets doivent être doubles : "

exemple pour un envoi d'emails en CSV:
    email,nom,age
    machin@gmail.com,machin,42
    bidule@free.fr,bidule,25
    

La première ligne définit les noms des paramètres.

2.2) Le template


Les données que vous avez envoyées dans le champ 'datas' sont accessibles en insérant {{ data.* }} dans votre template. Par exemple, vous pouvez créer le template suivant pour votre mailing :
    Bonjour {{data.nom_complet}}, <br><br>
    
    Nous vous proposons une offre exceptionnelle, valable jusqu'au {{data.fin_offre}} <br><br>
    
    <a href="http://www.perdu.com">Cliquez ici pour en bénéficier de suite !</a><br> 
Tous les filtres intégrés à Django peuvent être utilisés dans vos templates, par exemple {{ data.nom_complet|capfirst }}, qui mettra la première lettre du nom en majuscule.

Si un champ n'existe pas dans les datas envoyées, son contenu n'apparaitra pas dans le mail/fax/sms final.


2.3) Ajout de fichier attaché


Cette fonctionalité est évidement uniquement accessible lorsque le type d'envoi est l'email ou fax.
Pour ajouter un ou plusieurs fichier(s) à attacher à l'email lors de l'envoi, il faut modifier le formatage des paramètres,
passer d'un mode d'envoi (ou enctype) 'application/x-www-form-urlencoded' (comme un formulaire en POST normal)
à un mode d'envoi 'multipart/form-data' (comme un formulaire en POST avec un input type=file).

exemple de requête contenant un fichier à joindre à la campagne d'email :
        ...
        
        Content-Type: multipart/related; boundary="===============1931184483"
        
        ...
        
        --===============1931184483==
        Content-Type: application/octet-stream
        MIME-Version: 1.0
        Content-Transfer-Encoding: base64
        Content-Disposition: form-data; filename="mon_fichier.ext"

        bW9uIGN2IGJsYWJsYQ==
        --===============1931184483==--
    


Notez que les librairies les plus souvent utilisées pour forger directement des requêtes HTTP (PEAR/HTTP_request ou cURL en php, urllib2 en python) permettent de faire ceci assez simplement.
Quelques liens pour expliquer le fonctionement :
La spécification HTML du content-type "multipart/form-data" (en anglais)
Une classe en python pour poster en "multipart/form-data"
Un exemple en php (et cURL) d'envoi de mailing avec un fichier attaché


3) Récupération des statistiques

http://www.revolumail.com/stats
Méthode : POST

Paramètres de la requête :

Nom Valeur par défaut Choix possibles Description
login

Votre login utilisateur
password

Votre Mot de passe
format json html, json, xml, csv Le format de retour des données
Note : Il est impossible de récupérer les statistiques détaillées (cmd=details) en format csv du faite de sa trop grande simplicité.
cmd
list, global, details commande,
Modifie les données qui sont renvoyées 
mailing, mailing

nom de la campagne dont on veut récupérer les statistiques
Ce paramètre est obligatoire pour les commandes "global" et "details",
inexistant pour la commande "list"

3.1) Liste des campagnes de l'utilisateur

cmd=list


Renvoi la liste des campagnes lancées par l'utilisateur en cours.

exemple de retour json :
    [
         "nom_campagne1"
        ,"mailing-2568"
        ,"mailing-6587"
    ]

3.2) Statistiques globales d'une campagne précise

cmd=global&mailing=NomDeLaCampagne


Ou "NomDeLaCampagne" dois être remplacé par la valeur du nom de la campagne telle que récupérée par la requête cmd=list


NB : ce nom peut diverger de celui choisi lors de l'envoi du mailing, car il est transformé pour être unique et valide dans une URL. Vous devez donc veiller à utiliser le nom fourni par la commande cmd=list


Données renvoyées :


Nom Valeurs possibles Description
name
Nom de la campagne
type email, fax, sms Type de la campagne
status 0 (en attente), 1 (en cours d'envoi) ou 2 (traitée) Statut de la campagne
recipients
Nombre de destinataires
sent
Nombre de messages envoyés
errors
Nombre d'erreurs
blacklist
Nombre de messages non envoyés car dans la blacklist
opened
Nombre de mails ouverts (type=email seulement)
clics
Nombre de clics sur les liens contenus dans le message
(type=email seulement)
unsuscribed
Nombre de personnes qui se sont desabonnées suite à ce mailing
(type=email seulement)

 exemple de retour JSON

           {
            "name" : "nom_campagne", 
            "type":"email", 
            "recipients":328 , 
            "status":2, 
            "sent":325, 
            "errors":12, 
            "blacklist":2, 
            "opened":226, 
            "clics":89,
            "unsuscribed":12
            }

3.3) Détails d'une campagne précise

cmd=details&mailing=NomDeLaCampagne


Ou "NomDeLaCampagne" dois être remplacé par la valeur du nom de la campagne telle que récupérée par la requête cmd=list


NB : ce nom peut diverger de celui choisi lors de l'envoi du mailing, car il est transformé pour être unique et valide dans une URL. Vous devez donc veiller à utiliser le nom fourni par la commande cmd=list

 

Les résultats peuvent être filtrés en ajoutant ces paramètres à la requête :

Nom Description
status_code  Renvoi seulement les destinataires avec ce code de statut, cf 3.4) la liste des codes

en plus des codes status numériques de la liste des codes, on peut passer un des 3 codes suivants:

  • waiting : équivalent à status_code 0 (les messages en attente d'envoi)
  • success : récupère les status_code de 20 et 39 (les messages envoyés avec succès)
  • error : récupère les status_code de 40 à 59 (les messages qui n'ont pas étés reçus par le destinataire)

start  Renvoi les lignes a partir de l'index "start" 
limit Le nombre de lignes maximum renvoyées

Données renvoyées pour chaque destinataire du mailing :

Nom Description
id Identifiant du mail envoyé
email  Email du destinataire
status_code  Code de statut d'envoi du message, cf 3.4) la liste des codes
diagnostic Un message d'erreur eventuelement renvoyé par le serveur mail du destinataire en cas de problème
date_sent Date d'envoi
date_opened Date d'ouverture
clics Une liste de dictionnaires "url" / "date" cliquées dans le mail

exemple de retour en json
      { 
       total:2 
       ,data:[ 
            {"id":"xxx", "email":"machin@truc.com", "status_code":30, "diagnostic":"", 
            "date_sent":"2009/06/19 17:48:01","date_opened":"2009/06/20  13:02:59",
            "clics":[{"url":"http://www.perdu.com", "date":"2009/06/20 13:04:23"}]
            },
            {"id":"yyy","email":"bidule@chouette.com", "status_code":20, "diagnostic":"", 
            "date_sent":"2009/06/19  17:48:03","date_opened":"","clics":[]
            }
       ]
      }

3.4) Liste des statuts


Code Description
0 Le Message est prêt à être envoyé
10 Le Message sera envoyé très prochainement
20 Le Message a été envoyé avec succès
30 Le Message a été ouvert par le destinataire (email seulement)
31 Le destinataire s'est desabonné (email seulement)
40 Le Message n'a pas pu être envoyé au destinataire
41 Le Message n'a pas pu être envoyé au destinataire, les données ne contenant pas d'adresse valide (ou tel, suivant le type de la campagne)
42 Le Message n'a pas pu être envoyé au destinataire, une erreur c'est produite pendant la génération du message
43 Le Message n'a pas pu être envoyé au destinataire, impossible de joindre le serveur d'envoi
44 Le Message n'a pas pu être envoyé au destinataire, le serveur d'envoi a refusé la connection
45 Le Message n'a pas été envoyé au destinataire, car il s'est désabonné
46 Le Message n'a pas été envoyé au destinataire, car un message lui à déjà été envoyé lors de ce mailing (supréssion des doublons)
50 Le Message a été envoyé mais le destinataire ne l'a pas reçu
51 Le Message a été envoyé mais le destinataire ne l'a pas reçu, car son adresse (ou son tel) est inconnue
52 Le Message a été envoyé mais le destinataire ne l'a pas reçu, car son adresse (ou son tel) est incorrecte
53 Le Message a été envoyé mais le destinataire ne l'a pas reçu, car le serveur a considéré le message comme du spam

4) Avoir un Aperçu d'un mail envoyé

http://www.revolumail.com/viewmail
Méthode : POST

Paramètres de la requête :

Nom Description
login Votre login utilisateur
password Votre Mot de passe
id L'identifiant du Message que l'on veux visualiser
html Valeur par défaut : false
si ce paramètre est à 'true', seule la partie HTML du corps du mail sera renvoyée,
sinon, l'intégralité du mail et de ses en-têtes seront renvoyés

5) Supprimer les données d'une campagne de mailing

http://www.revolumail.com/delete
Méthode : POST

Nom Description
login Votre login utilisateur
password Votre Mot de passe
mailing Le nom de la campagne de mailing que l'on souhaite supprimer, tel qu'il est renvoyé par la requête /stats
Attention : cette requête supprime toutes les données sur la campagne choisie, ainsi que ces statistiques.


Vous souhaitez commencer dès maintenant à envoyer des mailings et augmenter votre visibilité ?
Consultez nos tarifs, inscrivez vous et c'est parti !