1. ホーム
  2. ruby-on-rails

[解決済み] Deviseのメール確認はどのように設定するのですか?

2022-06-20 18:57:15

質問

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]"
 }

どのように解決するのですか?

1. Model.deviseの呼び出しに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ビューを生成し、deviseメーラのビューを上書きできるようにします。

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 開発中の設定をテストするために、mailcatcher gem をインストールします。これは開発中に SMTP サーバーとして使用し、受信したすべてのメールをキャッチして http://localhost:1080/ :

gem install mailcatcher

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

mailcatcher

おもちゃのSMTPサーバはポート1025で動作し、メールをキャッチしてHTTPポート1080に送信します。

これでアカウントを作成し、確認事項を見ることができます。