2011-06-16 23 views
28

Estoy tratando de obtener un correo electrónico de confirmación mediante una cuenta de Gmail. He mirado alrededor y no hay nada que sea obvio. No hay errores ni nada, sólo dos no enviargmail smtp con rieles 3

Tengo esto como la initalizer:

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.raise_delivery_errors = true 


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

ActionMailer::Base.default_url_options[:host] = "localhost:3000" 
+1

¿cuál es la salida de su consola al enviar un correo electrónico? –

Respuesta

5

Debe comprobar que [email protected] ha enviado realmente el correo electrónico. Hemos tenido problemas con esto en el pasado al enviar correos electrónicos de verificación a través del servidor SMTP de Gmail, ya que al enviar en bloque terminan sin enviar.

Sugiero que inicie sesión en [email protected] y verifique que no haya problemas y que se envíen los correos electrónicos.

Si no es así, es posible que desee probar un servicio como Send Grid para enviar correos electrónicos salientes.

Como alternativa, puede buscar en su servidor. O si está en desarrollo, eche un vistazo a log/development.log. Estoy bastante seguro de que puede ver en sus registros que en realidad está tratando de enviar el correo.

El problema es que Google no confía en su dirección IP local y sus correos no se entregarán (ni siquiera al directorio de spam). No hay forma de evitar esto, pero usando un servidor de lista blanca.

Puede probar esto implementando su aplicación en un servidor de producción como Heroku y pruébela allí.

8

complemento tlsmail a Gemfile

gem 'tlsmail' 

de ejecución:

bundle install 

añadir estos ajustes a config/envirnoments/development.rb presentar

YourApplicationName::Application.configure do 
    require 'tlsmail' 
     Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) 
     ActionMailer::Base.delivery_method = :smtp 
     ActionMailer::Base.perform_deliveries = true 
     ActionMailer::Base.raise_delivery_errors = true 
     ActionMailer::Base.smtp_settings = { 
      :address => "smtp.gmail.com", 
      :port => "587", 
      :domain => "gmail.com", 
      :enable_starttls_auto => true, 
      :authentication => :login, 
      :user_name => "<addreee>@gmail.com", 
      :password => "<password>" 
     } 

    config.action_mailer.raise_delivery_errors = true 
+8

no se olvide de reiniciar el servidor;) –

+3

REINICIO DEL SERVIDOR ..... ahhh ... ¡Gracias! –

64

No es necesario tlsmail joya al menos con Rails 3.2

Esto será suficiente

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

Desde el todo-poderoso-guía ActionMailer configuration for gmail

+0

Impresionante, agradable de saber. Salvándome un montón de dolores de cabeza. ¡Gracias por el aviso! – LearningRoR

+0

No hay problema;) Ahora me acostumbré a buscar en las guías de Rails casi todo – brutuscat

+8

Aparentemente, ': domain' es [opcional] (http://bit.ly/QAAPPv), aunque no lo sabría al leer el [docs] (http://am.rubyonrails.org/). –

0
config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => 'baci.lindsaar.net', 
    :user_name   => '<username>', 
    :password    => '<password>', 
    :authentication  => 'plain', 
    :enable_starttls_auto => true } 

El <username> significa que introduzca su nombre de usuario real? Lo mismo ocurre con el <password>

Cuestiones relacionadas