Product
L’association caritative Agape trouve un moyen simple de transférer les emails de ses bénévoles dans le monde entier
Cet article a été écrit par Huey Ly. Huey est développeur logiciel. Il vit et travaille à Xi’an en Chine, patrie des guerriers de terre cuite. Il est cofondateur et développeur principal de whyyu.com, une application d’apprentissage des langues pour enseigner l’anglais aux enfants chinois. Pendant son temps libre, il aide les organisations caritatives à tirer parti de la technologie pour mener à bien leur mission. C’est aussi un danseur très courageux.
Je suis bénévole à temps partiel à l’Agape Community Care Association (www.agape.org), une ONG qui vient en aide aux orphelins et aux autres personnes défavorisées dans la province du Shaanxi en Chine. L’association Agape compte des bénévoles et des employés originaires du monde entier, et la plupart de leurs comptes email sont hébergés chez des fournisseurs gratuits comme Gmail, Hotmail ou Yahoo. Agape souhaitait que chaque membre bénévole dispose de sa propre adresse email @agape.org.cn pour donner à l’organisation davantage de légitimité à l’échelle locale et internationale. Cependant, la migration et la consolidation de toutes les messageries d’un groupe aussi diversifié se sont avérées être un véritable casse-tête. De plus, le coût supplémentaire de toutes ces messageries aurait amputé leur budget déjà minuscule (ils ne conservent que 10 % des dons pour les frais administratifs, le reste va directement aux orphelinats et aux dispensaires). Que peuvent-ils faire ?
Transfert d’emails via Routes
Routes vous permet de configurer une série de règles sur la façon de traiter les messages entrants, comme ceux envoyés à @agape.org.cn. Plus précisément :
- Les messages sur lesquels agir (par exemple, les messages d’une personne en particulier, avec un objet spécifique ou même l’ensemble des messages)
- Ce que vous souhaitez faire de ces messages (par exemple, les transférer vers une autre adresse email ou les envoyer à votre application via une requête POST)
Pour Agape, je souhaitais intercepter tout ce qui était envoyé à un utilisateur disposant d’une adresse @agape.org.cn et transférer l’email vers une autre adresse. Mais Mailgun vous permet également de publier le message sur votre application : Mailgun vous enverra le message MIME complet non analysé (si c’est ce que vous préférez) ou l’analysera pour vous et publiera les paramètres analysés via POST. Dans les deux cas, le message sera transcodé en UTF-8, ce qui est un avantage très appréciable.
Configuration de centaines de routes en une seule fois à l’aide de l’API
Grâce à Mailgun Routes, Agape a pu transférer tous les emails envoyés aux adresses [user]@agape.org.cn vers les comptes email personnels de chaque membre. Aucune migration nécessaire ! De plus, le système de l’API nous a permis d’écrire un script qui importe rapidement et facilement des centaines de routes, à l’aide d’un fichier .csv. Laissez-moi vous expliquer.
1. Tout d’abord, nous créons un fichier .csv contenant l’adresse source et l’adresse de transfert séparées par des virgules, une paire par ligne, comme ceci :
example1@agape.org.cn, somemailbox@hotmail.com
example2@agape.orgcn, someotherbox@gmail.com
2. Ensuite, nous créons une fonction qui appelle l’API de Mailgun pour « ajouter une nouvelle route ».
// php
function create_route($recipient, $routeto) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, 'api:key-xxxxxxxxxxxxxxxx);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, 'https://api.mailgun.net/v2/routes');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, array('priority' => 1,
'expression' => 'match_recipient("' . $recipient . '")',
'action[1]' => 'forward("' . $routeto . '")',
'description' => 'Created by Mailgun Routes Importer'));
$result = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
}
3. Puis, nous créons une fonction qui analyse le fichier .csv dans un tableau, le parcourt et appelle la fonction de l’API pour ajouter chaque route :
// php
function run_importer() {
$filepath = "fwdaddresses.csv";
if(($handle = fopen($filepath, "r")) != FALSE) {
// loop and import
while (($addresses = fgetcsv($handle, 1000, ",")) !== FALSE) {
$recipient = trim($addresses[0]);
$routeto = trim($addresses[1]);
create_route($recipient, $routeto);
}
}
}
4. Assurez-vous ensuite que le script et le fichier .csv se trouvent dans le même répertoire (ou modifiez la variable $filepath pour qu’elle corresponde au chemin d’accès de votre fichier .csv) et exécutez le script : run_importer();
C’est vraiment très simple. À l’aide de l’API Routes de Mailgun, nous avons pu ajouter rapidement des centaines d’adresses de transfert afin que le personnel et l’équipe bénévole d’Agape dans le monde entier puissent accéder facilement à leurs emails Agape. Merci Mailgun !