Como visualizar e-mails com ActionMailer::Preview

actionNós sabemos como é chato ficar testando nossos e-mails no ambiente de desenvolvimento. Pensando nisso, foi inserido na versão 4.1 do Rails o ActionMailer::Preview, tornando possível a visualização de e-mails sem que eles sejam de fato enviados. Vamos aprender como utilizar essa ferramenta?

actPrimeiramente, vamos gerar um novo mailer em nosso projeto

rails generate mailer WelcomeRunning via Spring preloader in process 5087      create  app/mailers/welcome_mailer.rb      invoke  erb      create    app/views/welcome_mailer      invoke  test_unit      create    test/mailers/welcome_mailer_test.rb      create    test/mailers/previews/welcome_mailer_preview.rb

Veja que ele já criou dois arquivos dentro da pasta test: test/mailers/welcome_mailer_test.rb e test/mailers/previews/welcome_mailer_preview.rb. Nesse caso, vamos utilizar o test/mailers/previews/welcome_mailer_preview.rb para podermos visualizar nossos templates.

Vamos agora criar um método dentro do WelcomeMailer que enviará um e-mail de boas vindas para os usuários que se cadastrarem em nosso sistema, supondo que temos um model User com atributo email. Para isso, vamos abrir o arquivo app/mailers/welcome_mailer.rb

class WelcomeMailer < ApplicationMailer
  def send_welcome_email(user)    @user = user    mail({      to: user.email,      from: '[email protected]',      subject: 'Seja bem-vindo ao sistema Maurício Ackermann'      })  end
end

Como WelcomeMailer está herdando de ApplicationMailer, ele utilizará o layout padrão que é o mailer

class ApplicationMailer < ActionMailer::Base  default from: '[email protected]'  layout 'mailer'end

app/layouts/mailer.html.erb

<!DOCTYPE html><html>  <head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <style>      /* Email styles need to be inline */    </style>  </head>
  <body>    <%= yield %>  </body></html>

Agora vamos criar um template de e-mail. Vamos criar um arquivo chamado send_welcome_email.html.erb dentro de app/views/welcome_mailer que será o html do nosso e-mail.

<p>Olá, <%= @user.name %></p><p><strong>Muito obrigado</strong> por se cadastrar em nosso sistema!</p>

Com o mailer criado e o template de e-mail pronto, vamos para a parte de testar. Os previews de e-mails ficam dentro da pasta test/mailers/previews. Vamos abrir o arquivo que foi criado pelo noso generator, welome_mailer_preview.html.erb.

class WelcomeMailerPreview < ActionMailer::Preview
  def send_welcome_email    WelcomeMailer.send_welcome_email(User.new(name: 'Maurício Ackermann', email: '[email protected]'))  end
end

Agora pra visualizarmos o e-mail, ligamos iniciamos o servidor e acessamos o link http://localhost:3000/rails/mailers/welcome_mailer/send_welcome_email

E ai, como isso pode ajudar vocês em seus projetos? Deixe seus comentários nos contando como você utilizou essa ferramenta. Ahh, e não esquece de seguir a Vídeos de TI nas redes sociais, blz?