web-dev-qa-db-ja.com

Net :: SMTPAuthenticationError Rails appから電子メールを送信するとき(ステージング環境)

Railsアプリケーションからメールを送信しています。開発環境ではうまく機能しますが、ステージングでは失敗します。次のエラーが表示されます。

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)

私はステージング用のドメイン名を持っていないことに注意してください。

Staging.rbの設定は次のとおりです。

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :Host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80'
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => 'login'
}

助けてください。

編集

:tls => trueオプションを追加すると、次のようになります

OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)

そして、ポートを25に変更すると、次のようになります(30秒の遅延があります)。

Timeout::Error (execution expired)
91
eagor

私は同じ問題を抱えていました。電子メールは開発から送信されましたが、本番からは送信されませんでした(Net::SMTPAuthenticationErrorを取得していました)。これにより、問題はアプリの構成にあるのではなく、Googleにあるという結論に至りました。

理由:Googleは未知の場所からのアクセスをブロックしていました(本番アプリ)

Solutionhttp://www.google.com/accounts/DisplayUnlockCaptcha に移動して、続行をクリックします(これによりアクセスが許可されます)新しいアプリを登録するために10分間)。この後、本番環境のアプリがメールを送信し始めました;)

237
Gee-Bee

このソリューションは私のために働いています:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { Host:'localhost', port: '3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'localhost:3000',
      :user_name => "[email protected]",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Googleがサインインの試みをブロックするのは事実ですが、あなたの設定は https://www.google.com/settings/security/lesssecureapps で変更できるので、アカウントはモダンによって保護されなくなりますセキュリティ標準。

24
A H K

解決しました!私は単にパスワードの変更私のGmailアカウントのために、何らかの形でエラーが消えました。

多数の変更の後、私が最終的に行った最終設定は次のとおりです。

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :Host => "my.ip.addr.here" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80',
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}
23
eagor

次のリンクに移動して https://www.google.com/settings/security/lesssecureapps をオンにします

14
aashish

上記の解決策は正しい設定を提供しましたが(すでに持っていました)、問題は解決しませんでした。試行を続けた後、同じエラーが引き続き発生しました。結局のところ、私はWebから「CAPTCHAをクリアする」必要がありました。詳細については、 gmailドキュメント をご覧ください。

また、「CAPTCHAのクリア」ページに直接ジャンプすることもできます here

13
Sorry-Im-a-N00b

かなり後のことですが、万が一の場合に役立ちます。GoogleAppsヘルプセンターに電話して、lesssecureapps設定を変更するよう指示しました(他の全員と同様)。また、ポートを465に変更するよう指示しました。

私の場合、それでうまくいきました!

2

受け入れられた答えは非常に古いようで、その時点でフォローイン(より良い)ソリューションが存在していたかどうかはわかりません:

  • https://myaccount.google.com/u/0/apppasswords に移動します
  • アプリの新しいパスワードを生成します
  • config.action_mailer.smtp_settingsで生成されたパスワードで個人パスワードを置き換えます

これで、メールの送信は完全に機能します!

0
ubugnu

同じ問題がありました。


解決:

0
Benyamin Jafari

私も問題に直面しました。Gmailの設定に関するいくつかの調査の後、解決策を見つけました。

  1. Gmailで、設定に移動します。

  2. [転送とPOP/IMAP]タブを選択します。

  3. [IMAPアクセス]セクションで、[IMAPを有効にする]を選択します。

0
Shrinivas

こんにちは、これも私のために働いたので、誰かがまだ問題を抱えているなら、これを試してください。

Gemfileにfigaroがあることを確認してください。ユーザー名やパスワードなどの機密情報を環境変数として保存するには

gem 'figaro'

そしてconfig/environments/development.rbに、メソッド配信としてsmtpを使用して以下のコードを貼り付けます

 config.action_mailer.delivery_method = :smtp

GmailのSMTP設定

  config.action_mailer.smtp_settings =
  {
    :address=> "smtp.gmail.com",
    :port => 587,
    :user_name => ENV['gmail_username'],
    :password=> ENV['gmail_password'],
    :authentication=> "plain",
    :enable_starttls_auto=>true
  }


config.action_mailer.default_url_options = { Host: "locahost:3000" }

Configディレクトリにapplication.ymlというファイルを作成し、以下のコードを追加します。

gmail_username: '[email protected]' 
gmail_password: "your_example_email_password_here"

ファイル内の認証には、メールとパスワードを使用する必要があります。

0
cooxy