Как настроить подтверждение по электронной почте с Devise? - PullRequest
123 голосов
/ 18 ноября 2011

Существует ли учебное пособие, в котором объясняется, как настроить электронное письмо с подтверждением регистрации Devise с нуля (как в разработке, так и в производстве), т. Е. Если у вас не настроен Action Mailer?

Поиск Google только что обнаружил кучу отдельных частей, связанных с этим.Ни одна часть не объясняет достаточно, и я не уверен, как они сочетаются друг с другом.Есть ли пошаговое объяснение или даже что-то, что объясняет начальные шаги?


Наконец-то все заработало.Выполните все шаги в принятом ответе ниже, затем добавьте следующее в мой файл 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]"
 }

Ответы [ 3 ]

201 голосов
/ 19 ноября 2011

1. Убедитесь, что вы включили подтверждающий вызов в Model.devise

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

2. Убедитесь, что вы добавили подтверждающий пользовательский перенос

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

Если вы используете devise 2.0+, это терпит неудачу, потому что devise больше не предоставляет помощников по миграции, и поэтому t.confirmable вызывает ошибку.Вместо этого скопируйте блок с пометкой «Confirmable» из их руководства по миграции .

3. Создайте представления устройства с помощью одной из следующих команд, чтобы вы могли переопределитьпредставления devise mailer:

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

Теперь вы можете переопределить представления mailer в devise/mailer/confirmation_instructions.html.erb или users/mailer/confirmation_instructions.html.erb в зависимости от настроек

4. Для среда разработки добавить следующие строки конфигурации в /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. Для рабочей среды в /config/environments/production.rb вы можете использовать нечто подобноек следующему (предположим, у вас есть SMTP-сервер на локальном хосте: 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 Чтобы протестировать установку в процессе разработки, установите гем mailcatcher, который вы будете использовать в качестве SMTPсервер в разработке, перехватывает все входящие письма и отображает их на http://localhost:1080/:

gem install mailcatcher

После установки запустите сервер mailcatcher с командой:

mailcatcher

Игрушечный SMTP-сервер будетработает на порту 1025, отлавливая электронные письма и вытесняя ихна HTTP-порт 1080.

Теперь вы можете создать учетную запись и просмотреть подтверждения.

7 голосов
/ 22 августа 2012

Я полагаю, вы должны отредактировать его еще раз ... номер порта должно быть в кавычках .. Вот так: -

:port => "587",

Я столкнулся с проблемой в рельсах 3.2.0 / ruby ​​1.9.2

3 голосов
/ 18 ноября 2011
...