Product
A instituição de caridade Agape descobre maneira fácil de encaminhar e-mail para voluntários no mundo todo
Esta postagem foi escrita por Huey Ly. Huey é um desenvolvedor de software que mora e trabalha em Xi’an, na China, lar dos guerreiros de terracota. Ele é cofundador & líder de desenvolvimento do whyyu.com, um aplicativo de aprendizado de idiomas para ensinar inglês a crianças chinesas. Em seu tempo livre, ele ajuda instituições de caridade a aproveitarem a tecnologia para promover suas missões. Ele também tem muita coragem na hora de dançar.
Presto trabalho voluntário de meio período na Agape Community Care Association (www.agape.org), uma ONG que ajuda órfãos e outras pessoas em situação de vulnerabilidade na província de Shaanxi, na China. A Agape conta com uma equipe global de voluntariado e de funcionários, e a maioria de suas contas de e-mail é hospedada em provedores gratuitos como Gmail, Hotmail ou Yahoo. A Agape queria que cada pessoa voluntária tivesse seu próprio endereço de e-mail @agape.org.cn para dar mais legitimidade à organização nos âmbitos local e internacional, mas migrar e consolidar todas as caixas de correio de um grupo tão diverso provou ser uma grande dor de cabeça. Além disso, o custo adicional de todas as caixas de correio extras afetaria seus já minúsculos fundos (a organização mantém apenas 10% das doações para fins administrativos, e o restante vai direto para os orfanatos e clínicas de saúde). O que é possível fazer?
Encaminhamento de e-mails usando o Rotas
O recurso Rotas permite que você configure uma série de regras sobre como lidar com mensagens recebidas, como aquelas enviadas para @agape.org.cn. Especificamente:
- Em quais mensagens agir (por exemplo, mensagens de uma pessoa específica, com um assunto específico ou até mesmo todas as mensagens)
- O que você deseja fazer com essas mensagens (por exemplo, encaminhá-las para outro endereço de e-mail ou enviá-las por POST para o seu aplicativo)
No caso da Agape, eu queria fazer a correspondência de qualquer coisa enviada a um usuário com um endereço @agape.org.cn e encaminhar o e-mail para outro endereço. No entanto, o Mailgun também permite que você escolha enviar a mensagem para o seu aplicativo: o Mailgun enviará a mensagem MIME inteira não analisada (se for da sua preferência) ou a analisará para você e enviará um POST com os parâmetros analisados. Em ambos os casos, a plataforma transcodificará a mensagem para UTF-8, o que é um ótimo bônus.
Configuração de centenas de rotas de uma só vez usando a API
Usando o recurso Rotas do Mailgun, a Agape conseguiu encaminhar todos os e-mails enviados aos endereços [user]@agape.org.cn para as contas de e-mail pessoais de toda a equipe. Não é preciso fazer nenhuma migração! Além disso, o sistema de API nos permitiu escrever um script que importa centenas de rotas de forma rápida e fácil, usando um arquivo CSV. Deixe-me mostrar o que quero dizer.
1. Primeiro, criamos um arquivo CSV de endereço de origem e de encaminhamento separados por vírgulas, um par por linha, dessa forma:
example1@agape.org.cn, somemailbox@hotmail.com
example2@agape.orgcn, someotherbox@gmail.com
2. Em seguida, criamos uma função que chama a API do Mailgun para “adicionar uma nova rota”.
// 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. Então, criamos uma função que analisa o arquivo CSV para uma matriz, o percorre e chama a função da API para adicionar cada rota:
// 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. Em seguida, basta certificar-se de que o script e o arquivo CSV estejam no mesmo diretório (ou alterar a variável $filepath para corresponder ao caminho do seu arquivo CSV) e executar o script: run_importer();
É bem simples, de verdade. Usando a API do Mailgun Routes, conseguimos adicionar rapidamente centenas de endereços de encaminhamento para que a equipe de funcionários e de voluntariado da Agape no mundo todo pudesse acessar facilmente os e-mails da organização. Obrigado, Mailgun!