2

本番環境からメールを送信するとエラーが発生します。具体的には次のとおりです。

Net::SMTPAuthenticationError (530-5.5.1 Authentication Required)

私のローカル マシンと開発環境では、 and を使用してパスワードを宣言しています。ENV[GMAIL_USERNAME]宣言ENV[GMAIL_PASSWORD]された ENV は .bash_profile に保存され、正常に動作しています。

  # Development Environment for Action Mailer config
  config.action_mailer.default_url_options = { host: '0.0.0.0:3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: 'smtp.gmail.com',
    port: 587,
    domain: 'mydomain.com',
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["GMAIL_USERNAME"],
    password: ENV["GMAIL_PASSWORD"]
  }

  # Production Environment for Action Mailer config
  config.action_mailer.default_url_options = { host: 'mydomain.com' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = false
  config.action_mailer.default charset: 'utf-8'
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    domain: "mydomain.com",
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: ENV["GMAIL_USERNAME"],
    password: ENV["GMAIL_PASSWORD"]
  }

残念ながら、本番環境でメールを送信するとエラーが発生します。ただし、ユーザー名とパスワードをハードコードするenvironments/production.rbと機能します。およびENV["GMAIL_USERNAME"]`ENV["GMAIL_PASSWORD"] は .bash_profile に設定されています。

export GMAIL_USERNAME="hello@mydomain.com"
export GMAIL_PASSWORD="mypassword"

ENV["GMAIL_USERNAME"]アプリが呼び出せないのではないかと思いましたがENV["GMAIL_PASSWORD"]、実稼働のレールコンソールにジャンプするとputs ENV["GMAIL_USERNAME"]、正しい資格情報が出力されます。

Apache を再起動し、アプリを複数回再起動しましたが、次に何をすべきか戸惑っています。

どんな助けでも大歓迎です。

よろしくお願いします。

4

1 に答える 1

3

誰の bash プロファイル? ユーザーですか?サーバーを起動するためにbashを実行しないため、Apacheは起動時にこれらのプロファイルを読み取りません。サーバーにログインすると、プロファイルがソースされます。これが、テスト時に機能する理由です。

環境変数がスクリプトまたは apache が実行される環境で定義されていることを確認する必要があります。サーバーによっては、これが /etc/apache2/envvars にあるか、apache の起動スクリプトに追加されている可能性があります。

于 2012-10-15T18:44:06.590 に答える