134

Action Mailer を設定していない場合など、Devise のサインアップ確認メールを最初から (開発と本番の両方で) 設定する方法を説明するチュートリアルはありますか?

Google の検索では、これに関連するさまざまな部分が見つかりました。1 つのピースだけで十分に説明できるわけではありません。ステップバイステップの説明、または最初のステップを説明するものはありますか?


最後にそれが機能しました。以下の受け入れられた回答のすべての手順に従い、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]"
 }
4

3 に答える 3

215

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、エラーが発生します。代わりに、移行ガイドから「確認可能」というラベルの付いたブロックをコピーします。

3.次のいずれかのコマンドを使用してデバイス ビューを生成し、デバイス メーラー ビューをオーバーライドできるようにします。

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次のようなものを使用できます (localhost:25 に SMTP サーバーがあると仮定します)。

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開発でセットアップをテストするには、開発で SMTP サーバーとして使用する mailcatcher gem をインストールし、すべての受信メールをキャッチして次の場所に表示しますhttp://localhost:1080/

gem install mailcatcher

インストールしたら、次のコマンドでメールキャッチャー サーバーを起動します。

mailcatcher

おもちゃの SMTP サーバーがポート 1025 で実行され、電子メールをキャッチし、HTTP ポート 1080 でそれらを表示します。

アカウントを作成し、確認を確認できるようになりました。

于 2011-11-18T22:11:19.127 に答える
7

もう一度編集する必要があると思います...ポート番号。引用符で囲む必要があります..このように:-

:port => "587",

Rails 3.2.0/ruby 1.9.2 で問題が発生しました

于 2012-08-22T11:22:18.043 に答える
3

ActionMailer Railsガイドを見たことがありますか?

于 2011-11-18T19:26:42.317 に答える