2010-11-20 27 views
21

Estoy usando Devise: confirmable y: módulo recuperable para confirmar a un usuario y permitirle recuperar su contraseña si se le olvida. Todo va bien, el correo se genera y puedo verlo en el registro del servidor, pero luego me enfrento a errores y el correo no se entrega al buzón. la configuración SMTP para mi archivo environment.rb es:Enviando correo con el servidor SMTP de Gmail

require 'tlsmail' 
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE) 
ActionMailer::Base.raise_delivery_errors = true 
ActionMailer::Base.perform_deliveries = true 
ActionMailer::Base.delivery_method = :smtp 

ActionMailer::Base.smtp_settings = { 
    :enable_starttls_auto => true, #this is the important shit! 
    :address => 'smtp.gmail.com', #'localhost', 
    :port => 587, 
    :tls => true, 
    :domain => 'mail.google.com', # mail.customdomain.com if you use google apps 
    :authentication => :login, 
    :user_name => '[email protected]', 
    :password => '_secret_password' 
} 

Si el: dirección es 'smtp.gmail.com', entonces me sale el siguiente error:

SocketError (getaddrinfo: Name or service not known): 

si fijo el : la dirección a 'localhost', entonces me sale el siguiente error:

Errno::ECONNREFUSED Connection refused - connect(2) 

no sé lo que esto: significa dirección, un novato de todas estas cosas. En corriendo uname -a, consigo

Linux jatin-ubuntu 2.6.32-24-generiC#38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux 

En mis /etc/hosts archivo de las entradas son los siguientes:

127.0.0.1 localhost 
127.0.1.1 jatin-ubuntu 

*#74.125.93.109 smtp.gmail.com 
#The above entry added by me* 

# The following lines are desirable for IPv6 capable hosts 
::1  localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
ff02::3 ip6-allhosts 

Cuando elimine el comentario de la dirección 'smtp.gmail.com' en el archivo/etc/hosts, el siguiente error se ha ido:

SocketError (getaddrinfo: Name or service not known): 

y ahora el error es:

Errno::ECONNREFUSED Connection refused - connect(2) 

No sé lo que está pasando mal, busqué en Google los errores e intenté de todo, pero no se rescató nada. Tengo la gema 'tlsmail' instalada y 'correo' gema también, y mi aplicación está en modo de desarrollo. Ayúdame a corregir este error para que pueda continuar felizmente mi viaje por los rieles y, si es posible, guiarme un poco sobre esto: aborde el problema en la dirección correcta para que yo entienda los conceptos básicos de esto. Gracias de antemano

Respuesta

24

Si todavía tiene problemas con este intento usando estos valores:

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 = { 
    :enable_starttls_auto => true, 
    :address   => 'smtp.gmail.com', 
    :port    => 587, 
    :tls     => true, 
    :domain    => 'gmail.com', #you can also use google.com 
    :authentication  => :plain, 
    :user_name   => '[email protected]', 
    :password   => '_secret_password' 
} 

Además, recomiendo poner estos ajustes en la configuración del archivo de entornos// development.rb en lugar de environment.rb para que pueda especificar diferentes servidores de correo para cada ambiente

+0

Gracias, hombre ... Realmente funcionó. ¿Podría escribir también la configuración si tengo un dominio propio y un nombre de usuario de ese dominio? –

+0

Simplemente cambie el dominio para que sea su dominio y nombre de usuario para que sea [email protected] ... Todo lo demás debe ser igual. –

+0

Con esta configuración, ¿enviará un correo electrónico desde [email protected] a cualquier dirección postal? – shibly

0
+0

@Rio Tera: Soy un novato en todo esto, así que no pude entender a lo que me estás guiando. ¿Podría elaborar un poco –

+0

: dominio probablemente debería ser el ejemplo de su dominio.com ' – riotera

+0

@Rio tera: aún no tengo mi propio dominio, un novato en desarrollo web. ¿¿Que debería hacer entonces?? ¿Tener su propio dominio es un requisito previo para esto? Si es así, compraré uno lo antes posible –

Cuestiones relacionadas