[Tutorial] Como enviar e-mails no Rails utilizando Sendgrid e Heroku

[Tutorial] Como enviar e-mails no Rails utilizando Sendgrid e Heroku

Recentemente tive que implementar um sistema de envio de e-mails em um projeto que tenho trabalhado e como sou iniciante em Ruby on Rails senti certas dificuldades. Por isso criei esse pequeno guia onde você vai aprender como enviar e-mails no Rails utilizando o Heroku e a gem Sendgrid

Antes de mais nada, tenha o seu projeto já online no Heroku. Você provavelmente já deve ter feito isso, então vamos para o primeiro passo.

1º Passo - Abra o terminal e navegue até a pasta do seu projeto. Feito isso, adicione o Sendgrid ao seu projeto:
heroku addons:add sendgrid:starter

2º Passo - Para testar se o Sendgrid foi adicionado com sucesso ao Heroku, digite no terminal o comando abaixo. Se retornar algo, então está tudo certo.
heroku config:get SENDGRID_PASSWORD

3° Passo - No arquivo "config/environments/production.rb" adicione as seguintes linhas:
ActionMailer::Base.smtp_settings = {
    :address => ‘smtp.sendgrid.net’,
    :port => ’587′,
    :authentication => :plain,
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
    :domain => ‘heroku.com’
}
ActionMailer::Base.delivery_method = :smtp

Com a configuração atual, você só poderá testar o envio de e-mails na Produção, ou seja, no Heroku. Isso porque as variáveis ENV estão configurados somente no Heroku, não no seu localhost. Se você acha melhor testar no seu localhost antes de enviar para o Heroku, siga o próximo passo (depois dos testes iniciais, é bom remover a configuração descrita no passo abaixo).

4º Passo - No arquivo "config/environments/development.rb" adicione as seguintes linhas:
ActionMailer::Base.smtp_settings = {
    :address => ‘smtp.sendgrid.net’,
    :port => ’587′,
    :authentication => :plain,
    :user_name => "substituir_aqui",
    :password => "substituir_aqui2",
    :domain => ‘heroku.com’
}
ActionMailer::Base.delivery_method = :smtp

5° Passo -Digite os seguintes comandos no Terminal. O texto em negrito deve ser substituído por eles.
heroku config:get SENDGRID_USERNAME #=> O que retornar, coloque em "substituir_aqui".
heroku config:get SENDGRID_PASSWORD #=> O que retornar, coloque em "substituir_aqui2".

Agora você deve adicionar um ActionMailer, que é um modulo padrão do Rails que serve para enviar e-mails. Não vou falar muito sobre o ActionMailer aqui, só vou usar um exemplo simples. Para saber mais sobre ActionMailer, veja isso e isso.

6° Passo - Adicione um ActionMailer para quando um novo usuário se registra no site, por exemplo:
rails g mailer UserMailer

7º Passo - No arquivo gerado em "app/mailers/user_mailer.rb", adicione o seguinte método (substitua por um e-mail seu, para testar se está funcionando):
def novo_usuario
    mail(:to => “seu@email.com”, :subject => “Bem vindo ao meu site!”)
end

8º Passo - Agora precisamos testar e ver se está tudo funcionando. Entre no "Rails Console" digitando "rails c" no terminal e então coloque:
UserMailer.novo_usuario.deliver

Em instantes você deve receber uma mensagem no seu e-mail com o assunto "Bem vindo ao meu site!". E pronto, finalizamos! Agora basta você aprender a usar o ActionMailer e seja feliz!

Quaisquer comentários são bem vindos, se não tem nada para comentar, então curta no Facebook ou retweet.

0 comentários: