Come posso impostare la conferma e-mail con Devise?


127

Esiste un tutorial là fuori che spiega come configurare l'e-mail di conferma dell'iscrizione di Devise da zero (sia in sviluppo che in produzione), ovvero se non hai configurato Action Mailer?

La ricerca di Google ha appena rivelato un mucchio di pezzi separati relativi a questo. Nessun pezzo spiega abbastanza e non sono sicuro di come si incastrino. Esiste una spiegazione dettagliata o addirittura qualcosa che spiega i passaggi iniziali?


Finalmente ha funzionato. Ho seguito tutti i passaggi nella risposta accettata di seguito, quindi ho aggiunto quanto segue al mio file 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]"
 }

Risposte:


208

1. Assicurati di includere confermabile in Model.devise chiamata

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

2. Assicurati di aggiungere confermabili alla migrazione dell'utente

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

Se stai usando devise 2.0+, questo fallisce perché escogitare non fornisce più aiutanti di migrazione e quindi t.confirmablegenera un errore. Copiare invece il blocco con l'etichetta "Confermabile" dalla guida alla migrazione .

3. Generare le viste escavazione, con uno dei seguenti comandi, in modo da poter sovrascrivere le viste escavatore mailer:

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

Ora puoi sovrascrivere le visualizzazioni del mailer in devise/mailer/confirmation_instructions.html.erbo in users/mailer/confirmation_instructions.html.erbbase alla tua configurazione

4. Per l' ambiente di sviluppo aggiungere le seguenti righe di configurazione/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. Per l' ambiente di produzione in /config/environments/production.rbuso è possibile utilizzare qualcosa di simile al seguente (supponendo di avere un server SMTP su 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 Per testare l'installazione in fase di sviluppo installa il gemma del mailcatcher, che userai come server SMTP in fase di sviluppo, catturando tutti i messaggi in arrivo e visualizzandoli su http://localhost:1080/:

gem install mailcatcher

Una volta installato avviare il server mailcatcher con il comando:

mailcatcher

Un server SMTP giocattolo sarà in esecuzione sulla porta 1025 per catturare e-mail e dispacciarle sulla porta HTTP 1080.

Ora puoi creare un account e vedere le conferme.


Wow, grazie per la risposta incredibilmente completa. Ho funzionato in modo tale che il ricevitore di posta stia catturando le e-mail, ma nessuna e-mail viene effettivamente visualizzata nella mia casella di posta. Ho provato due diversi indirizzi e-mail e ho controllato le cartelle spam in entrambi. C'è qualcosa che potrei perdere qui? (Sono in modalità sviluppo).
jyli7,

1
In fase di sviluppo non è necessario recapitare effettivamente le e-mail all'indirizzo. Mailcatcher ha un'interfaccia web su localhost: 1080 che puoi aprire e vedere le e-mail catturate - questo è il punto, per renderti semplice lo sviluppo. In produzione, tuttavia, vuoi utilizzare un vero server SMTP (Google Apps, qmail, postfix ecc. Parla con il tuo amministratore di sistema)
clyfe

3
E non dimenticare di riavviare il tuo server!
Matt Bond,

10
Devise 2.0 non fornisce più supporto per la migrazione e t.confirmablegenera quindi un errore. Invece, copia il blocco etichettato "Confermabile" dalla loro guida alla migrazione: github.com/plataformatec/devise/wiki/…
Ross Allen

1
Tutorial fantastico ... grazie per la condivisione .. +1 .. Vale anche la pena vedere Come fare: Aggiungi: confermabile alla pagina Utenti .
Arup Rakshit,

7

Credo che dovresti modificarlo di nuovo ... porta n. dovrebbe essere tra virgolette .. In questo modo: -

:port => "587",

Ho riscontrato un problema nelle rotaie 3.2.0 / ruby ​​1.9.2


Corretta. O "1025"se si utilizza Mailcatcher.
Etienne,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.