Usando o Mailgun com receitas do Capistrano
O Mailgun foi criado para ser o antídoto contra as dores no desenvolvimento de e-mail. Por isso, sempre ficamos empolgados quando profissionais de desenvolvimento levam nossa plataforma um passo adiante com as ferramentas que criam. Se você criou uma biblioteca, um módulo ou algo interessante para ser usado com o Mailgun, adoraríamos saber e dar destaque no nosso blog.
A publicação abaixo foi escrita por Spike Grobstein, Sr. DevOps Engineer na Ticket Evolution com mais de dez anos de experiência em Linux, com especialização em automação e implementação.
**********
Enviar e-mails manualmente após uma implementação bem-sucedida é chato, por isso decidi escrever uma receita do Capistrano para automatizar o processo usando o Mailgun. Você pode acessar o código completo aqui. Você precisará de uma conta do Mailgun, mas existe um plano gratuito que inclui acesso a todas as APIs do Mailgun para enviar até 200 e-mails por dia. Assim, você pode testar e ver se gosta.
Para enviar uma notificação após a implementação, adicione o seguinte trecho ao seu arquivo deploy.rb:
set :mailgun_api_key, 'key-12345678901234567890123456789012' # sua chave de API do Mailgun
set :mailgun_api_key, 'key-12345678901234567890123456789012' # sua chave de API do Mailgun
set :mailgun_domain, 'example.com' # seu domínio de e-mail do Mailgun
set :mailgun_from, 'deployment@example.com' # quem aparecerá como remetente do e-mail
set :mailgun_recipients, [ 'you@example.com', 'otherguy@example.com' ] # quem receberá o e-mail
# criar um hook para após a implementação
after :deploy, 'mailgun_notify'
Simples assim. Ao realizar uma implementação, um e-mail deve ser enviado automaticamente usando os modelos de texto e HTML integrados.
Você também pode enviar e-mails que incluam variáveis mais sofisticadas. Confira o exemplo a seguir, que envia e-mails diferentes para as equipes de desenvolvimento (Dev) e de operações (Ops). Se quiser usar esse código, basta colocá-lo no seu arquivo deploy.rb:
# ao usar send_email, as duas configurações a seguir são OBRIGATÓRIAS
set :mailgun_api_key, 'key-12345678901234567890123456789012' # sua chave de API do Mailgun
set :mailgun_domain, 'example.com' # seu domínio de e-mail do Mailgun
set :mailgun_recipient_domain, 'example.com' # anexar a qualquer endereço de e-mail não qualificado
set(:email_body) { abort "Por favor, defina email_body usando `-s email_body='este é o corpo do e-mail'" }
# algumas variáveis que usaremos ao chamar mailgun.send_email
set :ops_emails, [ 'alice', 'bob' ]
set :dev_emails, [ 'carl@contractors.com', 'dave' ]
# algumas tarefas básicas
namespace :email do
task :ops do
mailgun.send_email(
:to => ops_emails, # build_recipients é chamado automaticamente por Capistrano::Mailgun
:from => 'some_dude@example.com',
:subject => 'você acaba de receber um mailgun',
:text => email_body
)
end
task :devs do
mailgun.send_email(
:to => 'no-reply@example.com',
:from => 'no-reply@example.com',
:bcc => mailgun.build_recipients(dev_emails, 'audit.example.com'), # repare no domínio diferente
:subject => 'Vocês são apenas da equipe de desenvolvimento',
:text => email_body
)
end
end
Isso define duas tarefas que podem ser usadas para enviar e-mails para as equipes de operações ou de desenvolvimento. A tarefa email:ops está usando uma variável do Capistrano, email_body, que deve ser definida na linha de comando. Com esse exemplo, você poderia enviar um e-mail para o pessoal de operações como o seguinte:
cap email:ops -s email_body="Vocês são incríveis. Continuem com o bom trabalho"
Você também poderia aproveitar :text_template e/ou :html_template para enviar mensagens mais complexas. O que vimos acima é apenas um exemplo.
Além disso, repare no uso de mailgun.build_recipients. A documentação completa está disponível no GitHub.
Espero que este código ajude a eliminar parte da complexidade ao gerenciar grandes implementações. Conte-me o que você achou!
Fundada em abril de 2010, a Ticket Evolution desenvolve software e serviços que lidam com a execução em tempo real, compensação e liquidação de negociações de tickets de eventos. Se você já comprou um ticket online para um jogo esportivo, ou ligou para uma corretora em busca de lugares para um show, é muito provável que nosso sistema tenha sido usado no processo. A equipe da Ticket Evolution se orgulha de criar um ótimo ambiente para aprender e contribuir com projetos interessantes. A equipe costuma resolver desafios técnicos complexos, mantendo-se sempre a par tanto de novas tecnologias quanto de fundamentos estabelecidos da ciência da computação. A empresa também está contratando!