Jak skonfigurować potwierdzenie e-mail w Devise?

Czy istnieje samouczek, który wyjaśnia, jak skonfigurować Devise ' s signup confirmation email od podstaw (zarówno w rozwoju, jak i produkcji), tj. jeśli nie masz skonfigurowanego Action Mailera?

Wyszukiwarka Google właśnie znalazła kilka oddzielnych elementów związanych z tym. Nikt nie wyjaśnia wystarczająco, i nie jestem pewien, jak do siebie pasują. Czy istnieje jakieś wyjaśnienie krok po kroku, czy nawet coś, co wyjaśnia początkowe kroki?


Finally got it pracuję. Wykonałem wszystkie kroki w zaakceptowanej Odpowiedzi poniżej, a następnie dodałem następujące do mojego środowiska.plik 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. upewnij się, że uwzględniasz w modelu potwierdzenie.devise call

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

2. upewnij się, że dodałeś confirmable do migracji użytkownika

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

Jeśli używasz devise 2.0+ to się nie powiedzie, ponieważ devise nie dostarcza już helperów migracji, a więc t.confirmable rodzi błąd. Zamiast tego skopiuj blok oznaczony jako "Confirmable" z ich przewodnika migracji.

3. Wygeneruj widoki devise za pomocą jednego z poniższych poleceń, dzięki czemu możesz obejrzyj widok devise Mailera:

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

Możesz teraz nadpisać widoki Mailera w devise/mailer/confirmation_instructions.html.erb lub users/mailer/confirmation_instructions.html.erb w zależności od konfiguracji

4. dla środowiska development dodaj następujące linie konfiguracyjne w /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. dla produkcji środowiska w /config/environments/production.rb możesz użyć czegoś podobnego do następującego (Załóżmy, że masz serwer SMTP na 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 aby przetestować konfigurację w rozwoju zainstaluj Gem mailcatcher, który będzie używany jako serwer SMTP w rozwoju, przechwytywanie wszystkich przychodzących wiadomości i wyświetlanie ich na http://localhost:1080/:

gem install mailcatcher

Po zainstalowaniu uruchom serwer mailcatcher poleceniem:

mailcatcher

Zabawkowy serwer SMTP będzie działał na porcie 1025 wyłapując wiadomości e-mail i wyświetlając je na porcie HTTP 1080.

Możesz teraz utworzyć konto i zobaczyć potwierdzenia.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-01 19:33:46

Uważam, że powinieneś to jeszcze raz edytować... nr portu powinno być w cudzysłowie .. Tak: -

:port => "587",

Napotkałem problem w 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/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-22 11:22:18

Czy oglądałeś ActionMailer Rails Guide ?

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-18 19:26:42