↓ Archives ↓

Enviando notificação de registro pelo Gmail usando Rails 2.3

Digamos que você queira administrar melhor seu sistema e deseja receber no seu e-mail uma notificação a cada novo registro efetuado.

Comece um novo projeto.

rails notificar_registro
cd notificar_registro/
script/generate scaffold Call title:string author:string description:text
rake db:migrate

Antes de continuar, copie o código da lib smtp_tls e coloque ela na sua pasta ‘lib’. Como aqui eu estou enviando e-mail através do Gmail, preciso dessa lib para funcionar.

Agora abra o arquivo “config/environment.rb” e adicione esse código no final dele, depois do ultimo “end”


#ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.default_content_type = "text/html"
ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :address => "smtp.gmail.com",
  :port => 587,
  :authentication => :plain,
  :user_name => "seu_email@gmail.com",
  :password => 'sua_senha'
  }

Agora vamos criar nosso ActionMailer.

script/generate mailer Notification

No nosso model ‘notification’ vamos criar a função ‘notify’ para enviar os dados a view e que será chamada no controller ‘Calls’.


class Notification < ActionMailer::Base

  def notify(title, author, description)
    recipients "nome@dominio.com.br" #E-mail de quem ira receber a notificação
    from "seu_email@gmail.com"
    subject "Novo registro adcionado"
    body :call => { :title       => title,
                    :author      => author,
                    :description => description }
  end

end

Em “view/notifications”, crie um arquivo chamado “notify.erb” e adicione o seguinte código.


<p>
Chamada: <b><%= @call[:title] %></b> <br />
Autor: <b><%= @call[:author] %></b> <br />
Descrição: <b><%= @call[:description]%></b>
</p>

Com o model e a view criada, já podemos disparar o e-mail quando uma nova chamada for adicionada. Va para o controller “Calls” e adicione o seguinte código.


# Adicione logo após flash[:notice] = 'Call was successfully created.'

Notification.deliver_notify( @call.title,
                                      @call.author,
                                      @call.description )

Para quem quiser baixar, o source esta disponível no GitHub

Compartilhar:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Tumblr
  • Twitter
Enviando notificação de registro pelo Gmail usando Rails 2.3

5 Comments

  • [...] This post was mentioned on Twitter by Marcio. Marcio said: Enviando notificação de registro pelo Gmail usando Rails 2.3 http://bit.ly/aoX9O3 #new #post #soudev [...]

  • abr 20th 201012:04
    by Claudio

    Márcio, legal o post, só p/ alertar( nem precisa publicar este comentario), o source no git esta off(pelo menos o link nao existe e procurei em seus projetos no git e tbem nao achei.)

    []`s

  • abr 20th 201013:04
    by marciogm

    Obrigado Claudio!
    já arrumei o link no GitHub, devo ter feito alguma coisa e deletado o Repositório.

  • mai 20th 201003:05
    by Diego Roriz

    Muito fácil! Funcionou bem tranquilo! =]
    Onde posso ler mais sobre a documentação para tratar os retornos, etc?

  • mai 20th 201012:05
    by marciogm

    @Diego

    Aqui tem toda documentação do ActionMailer
    http://am.rubyonrails.org/
    http://api.rubyonrails.org/classes/ActionMailer/Base.html

    E para tratar erros, você pode ver a documentação da classe SMTP
    http://ruby-doc.org/core/classes/Net/SMTP.html

  • Leave a Reply