Enviando email com RoR - A busca pela felicidade
Estive com um problema em mãos, criar um cadastro de contato e enviar por email, esse não é um grande problema, tendo em vista que uso RubyOnRails, que transforma a maioria dos meus problemas em soluções.
Buscando na NET (google, claro) achei os ótimos textos do Marcos Zimmermann
e claro, a famosa Rails para sua diversão e lucro do Ronaldo Melo Ferraz, que você encontrará em http://www.htmlstaff.org/ver.php?id=5016 (aliás, esta é sem dúvida uma referência em apostila para iniciantes em RoR, obrigado Ronaldo), também encontrei um texto em inglês: http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer mas… (sempre tem um mas!), acontece que, sempre que tentava iniciar o servidor ocorria o seguinte erro:
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:278:in `load_missing_constant’: uninitialized constant ActionMailer (NameError) .
Até onde eu sabia ActionMailer estava correto, será que era eu quem estava errado?
Após subir ao monte everest, procurar o monge-que-tudo-sabe para me mostrar o segredo da felicidade ele me disse:
Filho meu, o segredo é:
No arquivo config/enviroment.rb, em vez de usar ActionMailer::Base
use config.action_mailer
funciona que é uma beleza….
Agradeci ao grande monge, e segui minha viagem pelos trilhos…
então fica assim:
se for enviar email usando o gmail, seguindo o tutorial do Marcos Zimmermann em vez de:
ActionMailer::Base.default_content_type = "text/html" ActionMailer::Base.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :authentication => :plain, :domain => "sead.com", :user_name => "email@gmail.com", :password => '******'
}
use:
config.action_mailer.default_content_type = "text/html" config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587, :authentication => :plain, :domain => "sead.com", :user_name => "email@gmail.com", :password => '******'
}
ou se você está utilizando o Tutorial do Ronaldo Melo Ferraz, em vez de usar
ActionMailer::Base.server_settings = { :address => "mail.yourdomain.com", :domain => "yourdomain.com", :user_name => "user@yourdomain.com", :password => "******", :authentication => :login }
use:
config.action_mailer.server_settings = { :address => "mail.yourdomain.com", :domain => "yourdomain.com", :user_name => "user@yourdomain.com", :password => "******", :authentication => :login } Funcionou comigo, e também vai funcionar com você!
Outras configurações (não menos importantes), podem ser feitas no arquivo config/enviroment.rb, vou demonstrar algumas delas:
config.action_mailer.delivery_method = :smtp | :sedmail | :test
Configura o modo de entrega de email.
O modo :smtp é o default do rails no modo de desenvolvimento, se quiser desabilitar o envio de email nesse modo, edite o arquivo development.rb no diretório config/enviroments e adicione a seguinte linha:
config.action_mailer.delivery_method = :test, que é o padrão no modo de teste. O email não será enviado, mas sim anexado a um array (acessível via ActionMailer::Base.deliveries)
config.action_mailer.raise_delivery_errors = true | false
se estiver setado true, todo erro que ocorrer ao enviar o email levantará uma exceção.
Obs.: nem todos os erros são imediatos
config.action_mailer.default_charset = “utf-8”
não preciso falar muito, alguém tem dúvida?
Agradeço ao Marcos Zimmermann
e ao Ronaldo M. Ferraz pelos excelentes tutoriais.
Amapá “no trilho”!
Alguns dias atrás, tivemos a idéia de criar um blog sobre Ruby e Rails. Depois de horas em um Brainstorm, resolvemos que nosso blog se chamaria AmapáOnRails, dedico às pessoas do Amapá que querem aprender ou aprimorar seus conhecimentos nessa maravilhosa linguagem de programação.
Além de espalhar o Ruby em nosso estado, temos tambem como objetivo ajudar a comunidade no que for necessario: bugs, plugins, etc.
Contamos com a ajuda de todos para divulgar nosso blog, que é o primeiro no estado do Amapá sobre Ruby e Rails.
Desde já agradeços!
Jeová Guilherme, Isaac Gueera e Rafael Pomar
