web-dev-qa-db-ja.com

Rails Herokuの本番環境用アプリでメーラーを設定する方法

ユーザーにメールを送信するためにメーラーを使用して、パスワードをDeviseおよびアクティブな管理者の「回復可能な」機能に設定する必要があります。開発環境では、これらのファイルに以下を追加してこれを行いました。

config/environment/development

#Added per active admin install instructions
config.action_mailer.default_url_options = { :Host => 'localhost:3000' }


#These settings are for the sending out email for active admin and consequently the   devise mailer
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = 
{

  :address            => 'smtp.gmail.com',
  :port               => 587,
  :domain             => 'gmail.com', #you can also use google.com
  :authentication     => :plain,
  :user_name          => '[email protected]',
  :password           => 'XXXXXXX'
}

実稼働環境で同じ機能を取得するにはどうすればよいですか?アプリをHerokuにデプロイしたい。どのファイルとコードを追加する必要がありますか?

16
banditKing

開発モードで動作する場合は、本番モードで動作します。

すべてが正しく設定されていると仮定すると、開発中のパスワードをリセットすると、Gmailアカウントを使用して実際のメールがすでに送信されます。

Deviseは、メーラーの構成セットアップが正しく行われていること(これは、ユーザーが行ったこと)と、パスワードのリセットを許可するようにdeviseを構成すること、および場合によっては電子メールの[差出人]フィールドの別の設定にのみ依存します。

3
ronalchn

デフォルトのメーラーURLを再構成する必要がある場合を除いて、開発モードで設定したすべての構成が機能します。

そう。

  1. Development.rbから設定をコピーして貼り付けます。

  2. デフォルトのメーラーをherokuアプリにポイントします。

    config.action_mailer.default_url_options = { :Host => 'YOURAPPNAME.herokuapp.com' }
    

また、本番環境に移行するときは、SMTPが持つ可能性のある電子メールの制限に注意してください。たとえば、開発中にgmailのSMTP制限をトリガーするのは難しいですが、本番環境ではより簡単にトリガーできます。

11
steel

これはうまくいくはずです!

Config/environment/production.rbに例外を除いて同じものがある限り、 default_url_optionsの:Host値は、開発時のみ「localhost」、heroku本番環境では「YOURAPPNAME.herokuapp.com」である必要があります。

つまり.

config.action_mailer.default_url_options = { :Host => 'YOURAPPNAME.herokuapp.com' }

Gmailでキャプチャのロックを解除することを忘れないでください。そうしないと、heroku(不明なソース)からメールが送信されません。あなたはこのリンクに行くことによってそれをすることができます: http://www.google.com/accounts/DisplayUnlockCaptcha

提案として、environments.rbからこれを移動すると思います

ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true

そして場所はenvironments/development.rbにあります

config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true

本番環境では必要ありません。

Herokuを不明なホストとして表示するGmailの詳細については、 Net :: SMTPAuthenticationError when send email from Rails app(on staging environment)) を参照してください。

4
skylerto