Как настроить подтверждение по электронной почте с Devise?
Существует ли учебное пособие, в котором объясняется, как настроить электронное письмо с подтверждением регистрации 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 ответа
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 с помощью одной из следующих команд, чтобы вы могли переопределить представления devise mailer:
rails generate devise:views # global
rails generate devise:views users # scoped
Теперь вы можете переопределить почтовые представления в 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-сервер на 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 Чтобы проверить настройки в разработке, установите гем mailcatcher, который вы будете использовать в качестве SMTP-сервера в разработке, перехватывая все входящие письма и отображая их на http://localhost:1080/
:
gem install mailcatcher
После установки запустите сервер mailcatcher с помощью команды:
mailcatcher
На порту 1025 будет запущен игрушечный SMTP-сервер, который перехватывает электронные письма и переносит их на HTTP-порт 1080.
Теперь вы можете создать учетную запись и увидеть подтверждения.
Я считаю, что вы должны отредактировать его еще раз... номер порта. должно быть в кавычках.. Вот так:-
:port => "587",
Я столкнулся с проблемой в рельсах 3.2.0/ruby 1.9.2