Problema ao enviar email usando gmail (locaweb)

333 views
Skip to first unread message

Eduardo Resende

unread,
Sep 11, 2009, 1:23:52 AM9/11/09
to Rails BR (grupo)
Galera, tudo bem?

talvez alguem possa me dar uma dica, é o seguinte:
eu nao consigo enviar emails do gmail pela minha app, hospedada na locaweb
estava funcionando tudo certo ontem, mas na minha ultima atualizacao de repente zebrou (nao tinha alterado nada disso)

pesquisando o log do erro no google, eu vi que se relacionava a rails 2.3.2 e ruby 1.8.7

só que eu estou com rails 2.2.2 (freeze) na app e ruby 1.8.6

mesmo assim, segui a recomendação e meu arquivo environment.rb ficou da seguinte forma:

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
require 'action_mailer'
require 'smtp_tls'

Rails::Initializer.run do |config|

  #config/initializers/mail_config.rb
  #ActionMailer::Base.default_content_type = "text/html"
  ActionMailer::Base.delivery_method = :smtp
  ActionMailer::Base.smtp_settings = {
    :enable_starttls_auto => true,
    :address => "smtp.gmail.com",
    :port => 587,
    :domain => "meudominio.com.br",
    :authentication => :plain,
    :user_name => "meue...@gmail.com",
    :password => "secret"
  }


o log que mostra o erro é:

Net::SMTPAuthenticationError (530 5.7.0 Must issue a STARTTLS command first. 6sm1007544qwd.3
):
    /usr/lib/ruby/1.8/net/smtp.rb:576:in `auth_plain'
    /usr/lib/ruby/1.8/net/smtp.rb:570:in `__send__'
    /usr/lib/ruby/1.8/net/smtp.rb:570:in `authenticate'
    /usr/lib/ruby/1.8/net/smtp.rb:410:in `do_start'
    /usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/smtp_tls.rb:29:in `send'
    /usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/smtp_tls.rb:29:in `start'
    /home/balandrau/.gem/ruby/1.8/gems/actionmailer-2.2.2/lib/action_mailer/base.rb:671:in `perform_delivery_smtp'
    /home/balandrau/.gem/ruby/1.8/gems/actionmailer-2.2.2/lib/action_mailer/base.rb:526:in `__send__'
    /home/balandrau/.gem/ruby/1.8/gems/actionmailer-2.2.2/lib/action_mailer/base.rb:526:in `deliver!'
    /home/balandrau/.gem/ruby/1.8/gems/actionmailer-2.2.2/lib/action_mailer/base.rb:392:in `method_missing'
    /app/controllers/acesso/recuperar_senha_controller.rb:27:in `recuperar_senha'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `send'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:617:in `call_filters'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/rescue.rb:136:in `passenger_orig_perform_action'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/request_handler.rb:65:in `perform_action'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `send'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:524:in `process_without_filters'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/session_management.rb:134:in `process'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:392:in `process'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:183:in `handle_request'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:123:in `dispatch'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `synchronize'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:122:in `dispatch'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
    /home/balandrau/.gem/ruby/1.8/gems/actionpack-2.2.2/lib/action_controller/dispatcher.rb:39:in `dispatch'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/request_handler.rb:50:in `process_request'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_request_handler.rb:207:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:378:in `start_request_handler'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:336:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/utils.rb:183:in `safe_fork'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:334:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:163:in `start'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/application_spawner.rb:213:in `start'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:262:in `spawn_rails_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:126:in `lookup_or_add'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:256:in `spawn_rails_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:80:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:255:in `spawn_rails_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:154:in `spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/spawn_manager.rb:287:in `handle_spawn_application'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `__send__'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:352:in `main_loop'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/abstract_server.rb:196:in `start_synchronously'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/bin/passenger-spawn-server:61

Rendering /home/storage/2/f6/70/balandrau/rails_app/balandrau/public/500.html (500 Internal Server Error)

Paulo Coutinho

unread,
Sep 11, 2009, 3:16:16 AM9/11/09
to rail...@googlegroups.com
Olá,

Coloque:

:tls => true,

ao invés de:

:enable_starttls_auto => true,

Comigo funciona numa boa.


2009/9/11 Eduardo Resende <ed.re...@gmail.com>



--
Atenciosamente,
Paulo Coutinho.
Blog: www.prsolucoes.com/blog
Site: www.prsolucoes.com
Msn:  pa...@prsolucoes.com

Eduardo Resende

unread,
Sep 11, 2009, 11:30:15 AM9/11/09
to rail...@googlegroups.com
Paulo, obrigado por responder

era exatamente desse jeito que estava antes, coloquei de novo, mas o erro é o mesmo

Net::SMTPAuthenticationError (530 5.7.0 Must issue a STARTTLS command first. 12sm140428fgg.26

):
    /usr/lib/ruby/1.8/net/smtp.rb:576:in `auth_plain'
    /usr/lib/ruby/1.8/net/smtp.rb:570:in `__send__'
    /usr/lib/ruby/1.8/net/smtp.rb:570:in `authenticate'
    /usr/lib/ruby/1.8/net/smtp.rb:410:in `do_start'
    /usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/smtp_tls.rb:29:in `send'
    /usr/lib/ruby/gems/1.8/gems/ar_mailer-1.3.1/lib/smtp_tls.rb:29:in `start'
    /vendor/rails/actionmailer/lib/action_mailer/base.rb:671:in `perform_delivery_smtp'
    /vendor/rails/actionmailer/lib/action_mailer/base.rb:526:in `__send__'
    /vendor/rails/actionmailer/lib/action_mailer/base.rb:526:in `deliver!'
    /vendor/rails/actionmailer/lib/action_mailer/base.rb:392:in `method_missing'
    /app/controllers/acesso/recuperar_senha_controller.rb:27:in `recuperar_senha'
    /vendor/rails/actionpack/lib/action_controller/base.rb:1253:in `send'
    /vendor/rails/actionpack/lib/action_controller/base.rb:1253:in `perform_action_without_filters'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:617:in `call_filters'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /vendor/rails/actionpack/lib/action_controller/rescue.rb:136:in `passenger_orig_perform_action'
    /usr/lib/ruby/gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/railz/request_handler.rb:65:in `perform_action'
    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in `send'
    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in `process_without_filters'
    /vendor/rails/actionpack/lib/action_controller/filters.rb:606:in `process_without_session_management_support'
    /vendor/rails/actionpack/lib/action_controller/session_management.rb:134:in `process'
    /vendor/rails/actionpack/lib/action_controller/base.rb:392:in `process'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:183:in `handle_request'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:110:in `dispatch_unlocked'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:123:in `dispatch'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:122:in `synchronize'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:122:in `dispatch'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:132:in `dispatch_cgi'
    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:39:in `dispatch'

Ricardo S Yasuda

unread,
Sep 11, 2009, 11:56:02 AM9/11/09
to rail...@googlegroups.com
Tente colocar

Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)

antes da configuração do ActionMailer

Eduardo Resende

unread,
Sep 11, 2009, 12:18:39 PM9/11/09
to rail...@googlegroups.com
Ricardo, vc é o cara, bixo!

ele nao estava encontrando o metodo enable_tls (nada que uma boa googlada nao resolvesse)

alem de colocar o que voce me falou, tem que instalar e dar um require na gem tlsmail

gem install tlsmain

# environment.rb
require 'tlsmail'

Muito obrigado, Ricardo
Te devo essa, brother

Paulo Coutinho

unread,
Sep 11, 2009, 1:36:40 PM9/11/09
to rail...@googlegroups.com
Olá Eduardo,

É mais fácil você copiar o plugin para sua pasta de plugin:

action_mailer_optional_tls

Esse é o plugin que faz tudo, e nem precisa instalar, basta copiar para sua pasta e usar somente o action mailer, ai fica somente 1 plugin.

Funciona para mim, tem que funcionar com você também.

2009/9/11 Eduardo Resende <ed.re...@gmail.com>

Eduardo Resende

unread,
Sep 11, 2009, 1:44:18 PM9/11/09
to rail...@googlegroups.com
Valeu, Paulo.

realmente é mais prático. Vou mudar mais tarde.

abraços

Nelson Minor Haraguchi Jr

unread,
Sep 11, 2009, 4:22:36 PM9/11/09
to rail...@googlegroups.com
Estou usando o Gmail também para mandar emails e estava tendo esse problema também.

minha configuracao e essa.


ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,
  :address => "smtp.gmail.com",
  :port => 587,
  :domain => "----",
  :user_name => "----",
  :password => "---",
  :authentication => :plain
}

Tinha problemas com a versão 1.8.6 do ruby aparentemente ela nao lida bem com o starttls.

Atualizei.

Também tive problemas usando a porta 465 do gmail, e resolveu usando a 587, mas nao custa tentar a outra.

Obs.: não é exatamente o gmail, mas o Google Apps que estou usando. Acredito que nao mude muito.

Nelson Minor Haraguchi Junior
---
So long and thanks for all the fish

Twitter: http://twitter.com/nelsonmhjr
Gtalk: nelso...@gmail.com


2009/9/11 Eduardo Resende <ed.re...@gmail.com>
Reply all
Reply to author
Forward
0 new messages