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]"
}
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.
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
Czy oglądałeś ActionMailer Rails Guide ?
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