¿Cómo configuro la confirmación por correo electrónico con Devise?


¿Hay algún tutorial que explique cómo configurar el correo electrónico de confirmación de registro de Devise desde cero (tanto en desarrollo como en producción), es decir, si no tiene configurado Action Mailer?

La búsqueda de Google acaba de aparecer un montón de piezas separadas relacionadas con esto. Ninguna pieza explica lo suficiente, y no estoy seguro de cómo encajan. ¿Hay una explicación paso a paso por ahí, o incluso algo que explique los pasos iniciales?


Finalmente lo tengo trabajo. Seguí todos los pasos en la respuesta aceptada a continuación, luego agregué lo siguiente a mi entorno.archivo rb:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
   :tls => true,
   :address => "smtp.gmail.com",
   :port => 587,
   :domain => "gmail.com",
   :authentication => :login,
   :user_name => "[username]",
   :password => "[password]"
 }
Author: jyli7, 2011-11-18

3 answers

1. Asegúrese de incluir confirmable en el Modelo.devise call

class User < ActiveRecord::Base
  devise :database_authenticatable, :confirmable ...
end

2. Asegúrese de agregar confirmable a la migración de usuarios

create_table :users do |t|
  t.database_authenticatable
  t.confirmable
  ...
end

Si está utilizando devise 2.0+, esto falla porque devise ya no proporciona ayudantes de migración, por lo que t.confirmable genera un error. En su lugar, copie el bloque etiquetado como "Confirmable" de su guía de migración.

3. Genere las vistas de devise, con cualquiera de los siguientes comandos, para que pueda anular las vistas de devise mailer:

rails generate devise:views # global
rails generate devise:views users # scoped

Ahora puede anular las vistas de correo en devise/mailer/confirmation_instructions.html.erb o users/mailer/confirmation_instructions.html.erb dependiendo de su configuración

4. Para entorno de desarrollo agregue las siguientes líneas de configuración en /config/environments/development.rb

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {:address => "localhost", :port => 1025}

5. Para entorno de producción en /config/environments/production.rb puede usar algo similar a lo siguiente (suponiendo que tenga un servidor SMTP en localhost:25):

config.action_mailer.default_url_options = {:host => 'yourdomain.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address => "127.0.0.1",
  :port    => 25,
  :domain  => 'yourdomain.com'
}

6 Para probar la configuración en desarrollo instale la gema mailcatcher, que utilizará como servidor SMTP en desarrollo, capturando todos los correos entrantes y mostrándolos en http://localhost:1080/:

gem install mailcatcher

Una vez instalado inicie el servidor mailcatcher con el comando:

mailcatcher

Un servidor SMTP de juguete se ejecutará en el puerto 1025 capturando correos electrónicos y desplazándolos en el puerto HTTP 1080.

Ahora puede crear una cuenta y ver las confirmaciones.

 198
Author: clyfe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-01 19:33:46

Creo que deberías editarlo una vez más... puerto no. debería estar entre comillas .. Así: -

:port => "587",

Me enfrenté a un problema en rails 3.2.0/ruby 1.9.2

 7
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-22 11:22:18

¿Has visto la Guía de carriles de ActionMailer ?

 3
Author: clem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-18 19:26:42