wake-up-neo.net

Wie richte ich eine E-Mail-Bestätigung bei Devise ein?

Gibt es ein Tutorial, in dem erklärt wird, wie Sie die Anmeldebestätigungs-E-Mail von Grund auf neu einrichten (sowohl in der Entwicklung als auch in der Produktion), d. H., Wenn Sie Action Mailer nicht eingerichtet haben?

Die Google-Suche hat soeben eine Reihe separater Teile gefunden, die damit zusammenhängen. Kein Stück erklärt genug und ich bin mir nicht sicher, wie sie zusammenpassen. Gibt es da draußen eine schrittweise Erklärung oder sogar eine Erklärung für die ersten Schritte?


Endlich hat es funktioniert. Befolgte alle Schritte in der unten angegebenen akzeptierten Antwort und fügte Folgendes zu meiner Datei environment.rb hinzu:

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. Stellen Sie sicher, dass Sie den Aufruf von Model.devise mitbestätigen

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

2. Stellen Sie sicher, dass Sie der Benutzermigration einen bestätigbaren Zusatz hinzufügen

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

Wenn Sie devise 2.0+ verwenden, schlägt dies fehl, da devise keine Migrationshilfen mehr bereitstellt und daher t.confirmable Einen Fehler auslöst. Kopieren Sie stattdessen den Block mit der Bezeichnung "Confirmable" aus ihrer Migrationsanleitung .

3. Generieren Sie die Geräteansichten mit einem der folgenden Befehle, damit Sie die Gerätemailer-Ansichten überschreiben können:

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

Sie können jetzt die Mailer-Ansichten in devise/mailer/confirmation_instructions.html.erb Oder users/mailer/confirmation_instructions.html.erb Überschreiben, abhängig von Ihrer Einrichtung

4. Für die Entwicklung Umgebung fügen Sie die folgenden Konfigurationszeilen in /config/environments/development.rb Hinzu

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. Für die Produktion Umgebung in /config/environments/production.rb Können Sie Folgendes verwenden (vorausgesetzt, Sie haben einen SMTP-Server auf 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 Um das Setup in der Entwicklung zu testen, installieren Sie den Mailcatcher Gem, den Sie als SMTP-Server in der Entwicklung verwenden, und fangen alle eingehenden Mails ab und zeigen sie auf http://localhost:1080/ An:

gem install mailcatcher

Nach der Installation starten Sie den Mailcatcher-Server mit dem folgenden Befehl:

mailcatcher

Auf Port 1025 wird ein Spielzeug-SMTP-Server ausgeführt, der E-Mails abfängt und auf HTTP-Port 1080 verschiebt.

Sie können jetzt ein Konto erstellen und die Bestätigungen anzeigen.

202
clyfe

Ich glaube, Sie sollten es noch einmal bearbeiten ... Port-Nr. sollte in Anführungszeichen stehen .. wie folgt: -

:port => "587",

Ich hatte ein Problem in Rails 3.2.0/Ruby 1.9.2

7
user1571530

Hast du dir den ActionMailer Rails Guide angesehen?

3
clem