Product
La organización benéfica Agape encuentra una forma sencilla de reenviar emails para las personas voluntarias de todo el mundo
Este artículo lo ha escrito Huey Ly. Huey es desarrollador de software y vive y trabaja en Xi’an, China, la cuna de los guerreros de terracota. Es cofundador y desarrollador principal de whyyu.com, una aplicación de aprendizaje de idiomas para enseñar inglés a niños y niñas de China. En su tiempo libre, ayuda a organizaciones benéficas a aprovechar la tecnología para promover su misión. También es un bailarín muy valiente.
Trabajo como voluntario a tiempo parcial en la Agape Community Care Association (www.agape.org), una ONG que ayuda a población huérfana y a otras personas desfavorecidas en la provincia de Shaanxi, en China. Agape cuenta con personal y personas voluntarias de todo el mundo, y la mayoría de sus cuentas de email están alojadas en proveedores gratuitos como Gmail, Hotmail o Yahoo. Agape quería que cada persona voluntaria tuviera su propia dirección de email @agape.org.cn para dar a la organización más legitimidad a nivel local e internacional, pero migrar y consolidar todos los buzones de un grupo tan diverso resultó ser un gran dolor de cabeza. Además, el coste añadido de todos los buzones adicionales haría mella en su ya minúscula financiación (solo conservan el 10 % de las donaciones para fines administrativos, el resto va directamente a los orfanatos y clínicas de salud). ¿Qué pueden hacer?
Reenvío de email mediante enrutamiento
El enrutamiento te permite configurar una serie de reglas sobre cómo gestionar los mensajes entrantes, como los enviados a @agape.org.cn. En concreto:
- Sobre qué mensajes actuar (p. ej., mensajes de una persona en particular, con un asunto determinado o incluso todos los mensajes)
- Qué quieres hacer con esos mensajes (p. ej., reenviarlos a otra dirección de email o enviarlos mediante POST a tu aplicación)
En el caso de Agape, quería identificar todo lo enviado a cualquier persona con una dirección @agape.org.cn y reenviar el email a otra dirección, pero Mailgun también te permite elegir enviar el mensaje a tu aplicación mediante POST: Mailgun te enviará el mensaje MIME completo sin analizar (si eso es lo que prefieres) o lo analizará por ti y enviará los parámetros analizados mediante POST. En ambos casos, transcodificarán el mensaje a UTF-8, lo cual es una ventaja excelente.
Configuración de cientos de reglas de enrutamiento a la vez mediante la API
Al usar el enrutamiento de Mailgun, Agape pudo reenviar todos los emails dirigidos a las direcciones [user]@agape.org.cn a las cuentas de email personales de todo el mundo. ¡Sin necesidad de realizar migraciones! Además, el sistema de la API nos permitió escribir un script para importar cientos de reglas de enrutamiento de forma rápida y sencilla mediante un archivo .csv. Te enseñaré a qué me refiero.
1. En primer lugar, creamos un archivo .csv con la dirección de origen y la de reenvío separadas por comas, un par por línea, de la siguiente manera:
example1@agape.org.cn, somemailbox@hotmail.com
example2@agape.orgcn, someotherbox@gmail.com
2. A continuación, creamos una función que llama a la API de Mailgun para “añadir una nueva regla de enrutamiento”.
// 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. Luego creamos una función que analiza el archivo .csv en un array, iteramos sobre este y llamamos a la función de la API para añadir cada regla de enrutamiento:
// 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. Después, simplemente asegúrate de que el script y el archivo .csv estén en el mismo directorio (o cambia la variable $filepath para que coincida con la ruta de tu archivo .csv) y ejecuta el script: run_importer();
Es realmente muy sencillo. Al usar la API de enrutamiento de Mailgun, pudimos añadir rápidamente cientos de direcciones de reenvío para que el personal y las personas voluntarias de Agape en todo el mundo puedan acceder fácilmente a su email de Agape. ¡Gracias, Mailgun!