Get Adobe Flash player

Enviando e-mail com RubyOnRails utilizando ActionMailer

Autor: adriano | Data: 15/10/2009 | Tags: , , , | Categoria: Ruby, RubyOnRails

Olá a todos! Segue aqui um post simples, prático e objetivo de como enviar e-mails utilizando o ActionMailer. Existem vários tutoriais explicando a mesma ação mas como muitos deles ensinam de tudo um pouco, crio este no formato que considero simples. Não sei se todos virão como simples pois aqui na voraz nossa camada visual é flash então só nos interessa uma função mesmo, nada demais. Mesmo não contendo explicação de todos os métodos disponíveis, acredito que resolverá seu problema. =)

Ao trabalho!

O primeiro passo é você criar o model que extenda a classe ActionMailer que será o responsável pelo envio dos e-mails.

[bash]
script/generate mailer email
exists  app/models/
create  app/views/email
exists  test/unit/
create  test/fixtures/email
create  app/models/email.rb
create  test/unit/email_test.rb
[/bash]

Feito isso, será criado um model vazio.

[ruby]
class Email < ActionMailer::Base
end
[/ruby]

Agora criaremos uma função que terá a finalidade de montar todo nosso email.

[ruby]
class Email < ActionMailer::Base

def register_email(para, de, assunto, mensagem)
recipients para
from de
subject assunto
sent_on Time.now
body mensagem
content_type "text/html"
end

end[/ruby]

No exemplo acima, a função recebe os valores de parâmetro tudo separadamente. Nada o impede de criar uma função que receba um único objeto. É possível enviar a mensagem (body) tanto como texto normal ou como html. Case queira enviar para mais de um e-mail, basta enviar os e-mails em questão dentro de um array que ele automaticamente enviará para todos

Até agora temos o model baseado no ActionMailer com uma função que criará nosso e-mail. O próximo passo é configurarmos o arquivo config/enviroment.rb mas por quê? Por que o ruby precisa de uma conta que será responsável por fazer os envios

Abra seu enviroment.rb que se encontra na pasta config e deixe-o similar ao exemplo. Adicione estas linhas lá no final do documento.

[bash]
#Exemplo: Configurando para deixar o adriano@voraz.com.br como o email responsável:

ActionMailer::Base.smtp_settings =
{
:address => "smtp.voraz.com.br",
:port=>’25′,
:domain => "voraz.com.br",
:user_name => "adriano@voraz.com.br",
:password => "*******",
:authentication  => :login
}
[/bash]

Entenda a sintax:

[ruby]

Email.deliver_register_email([para quem vai], [quem está enviando], [assunto], [mensagem])

[/ruby]

Na prática:

[ruby]
#corpo da mensagem em html
body = "<b>Data e horário:</b> #{Time.now.strftime(‘%d/%m/%y’)} – #{Time.now.strftime(‘%H:%M’)}\n"
body << "<b>Nome:</b> Adriano\n"
body << "<b>E-mail:</b> adriano@voraz.com.br\n"
body << "<b>Telefone:</b> 18 – 3641 4382\n\n"
body << "<b>Assunto:</b>Testando o envio de e-mail \n"
body << "<b>Mensagem:</b> Apenas teste"

#Aqui faz o envio

Email.deliver_register_email(“adriano@voraz.com.br”, “voraz@voraz.com.br”, "Teste do envio", body)
[/ruby]

Note o prefixo deliver_ antes da função que criamos inicialmente. O mesmo é responsável por enviar nosso email. Não se esqueça dele pois nada funcionará.

Bem simples não?

Abraços



1 comentário

  1. Adriano Tadao » Enviando e-mail com RubyOnRails
    15/10/2009 00:21

Deixe um comentário!





Assine o nosso feed!

Aqui...

é um espaço colaborativo. Se você tem algo muito legal a dizer, envie pra gente no voraz@voraz.com.br

Categorias




Arquivo

Links