web-dev-qa-db-fra.com

Comment configurer la confirmation par courrier électronique avec Devise?

Existe-t-il un didacticiel expliquant comment configurer le courrier électronique de confirmation d'inscription de Devise en partant de zéro (en développement et en production), c'est-à-dire si Action Mailer n'est pas configuré?

La recherche sur Google vient de mettre au jour un tas de pièces distinctes liées à cela. Aucune partie n’explique suffisamment, et je ne suis pas sûre de savoir comment elles s’assemblent. Existe-t-il une explication pas à pas, ou même quelque chose qui explique les étapes initiales?


Enfin réussi à le faire fonctionner. A suivi toutes les étapes de la réponse acceptée ci-dessous, puis a ajouté ce qui suit dans mon fichier environment.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]"
 }
123
jyli7

1. Assurez-vous d'inclure confirmable dans l'appel Model.devise

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

2. Assurez-vous d'ajouter confirmable à la migration de l'utilisateur

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

Si vous utilisez la version 2.0+, cela échoue car la solution n’offre plus d’aide à la migration, et donc t.confirmable soulève une erreur. Au lieu de cela, copiez le bloc intitulé "Confirmable" de leur guide de migration .

3. Générez les vues Elaborer, avec l'une des commandes suivantes, afin de pouvoir remplacer les vues Elaborer:

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

Vous pouvez maintenant remplacer les vues de messagerie dans devise/mailer/confirmation_instructions.html.erb ou users/mailer/confirmation_instructions.html.erb en fonction de votre configuration

4. Pour développement l'environnement ajoutez les lignes de configuration suivantes dans /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. Pour production environnement dans /config/environments/production.rb vous pouvez utiliser quelque chose de similaire au suivant (en supposant que vous ayez un serveur SMTP sur 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 Pour tester la configuration en cours d'installation, installez la gem mailcatcher, que vous utiliserez comme serveur SMTP en cours de développement, en capturant tous les e-mails entrants et en les affichant sur http://localhost:1080/:

gem install mailcatcher

Une fois installé, démarrez le serveur mailcatcher avec la commande:

mailcatcher

Un serveur SMTP jouet s'exécutera sur le port 1025, capturant des e-mails et les affichant sur le port HTTP 1080.

Vous pouvez maintenant créer un compte et voir les confirmations.

202
clyfe

Je crois que vous devriez l'éditer à nouveau ... numéro de port. devrait être entre guillemets .. Comme ceci: -

:port => "587",

J'ai rencontré un problème dans Rails 3.2.0/Ruby 1.9.2

7
user1571530

Avez-vous regardé le ActionMailer Rails Guide ?

3
clem