125 votes

Comment mettre en place une confirmation par courrier électronique avec Devise ?

Existe-t-il un tutoriel qui explique comment configurer l'email de confirmation d'inscription de Devise à partir de zéro (à la fois en développement et en production), c'est-à-dire si vous n'avez pas installé Action Mailer ?

En cherchant sur Google, j'ai trouvé un grand nombre d'articles distincts sur ce sujet. Aucun élément n'est suffisamment explicite et je ne sais pas comment ils s'articulent entre eux. Existe-t-il une explication étape par étape, ou même quelque chose qui explique les étapes initiales ?


J'ai enfin réussi à le faire fonctionner. J'ai suivi toutes les étapes de la réponse acceptée ci-dessous, puis j'ai ajouté ce qui suit à 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]"
 }

206voto

clyfe Points 15388

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

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

2. Veillez à ajouter confirmable à la migration des utilisateurs.

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

Si vous utilisez devise 2.0+, cela échoue car devise ne fournit plus d'aides à la migration, et donc t.confirmable soulève une erreur. Au lieu de cela, copiez le bloc intitulé "Confirmable" à partir de leur guide de migration .

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

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

Vous pouvez désormais remplacer les vues du mailer dans la section devise/mailer/confirmation_instructions.html.erb o users/mailer/confirmation_instructions.html.erb en fonction de votre configuration

4. Pour développement ajouter 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 l'environnement en /config/environments/production.rb vous pouvez utiliser quelque chose de similaire à ce qui suit (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 dans le développement, installez la gemme mailcatcher, que vous utiliserez comme serveur SMTP dans le développement, capturant tous les courriers entrants et les affichant sur la page http://localhost:1080/ :

gem install mailcatcher

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

mailcatcher

Un petit serveur SMTP fonctionnera sur le port 1025, capturant les courriels et les envoyant sur le port HTTP 1080.

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

7voto

Je pense que vous devriez le modifier encore une fois... Le numéro de port devrait être entre guillemets... Comme ceci :-

:port => "587",

J'ai rencontré un problème avec rails 3.2.0/ruby 1.9.2

3voto

clem Points 1852

Avez-vous regardé le Guide ActionMailer Rails ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X