Enviando e-mail com RubyOnRails utilizando ActionMailer
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
Deixe um comentário!
Adriano Tadao » Enviando e-mail com RubyOnRails
15/10/2009 00:21[...] http://blog.voraz.com.br/enviando-e-mail-com-ruby-utilizando-actionmailer/ [...]