Как настроить подтверждение по электронной почте с разработки?


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

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


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

3 ответа:

1. убедитесь, что вы включили confirmable в модель.придумать вызов

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

2. убедитесь, что вы добавили confirmable к миграции пользователя

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

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

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

gem install mailcatcher

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

mailcatcher

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

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

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

:port => "587",

я столкнулся с проблемой в rails 3.2.0 / ruby 1.9.2

вы смотрели ActionMailer Rails Guide?