Net :: SMTPAuthenticationError(ステージング環境で)Railsアプリからメールを送信するとき


95

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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => 'login'
}

助けてください。

編集。

:tls => trueオプションを追加した後

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

次に、ポートを25に変更し、これを取得します(30秒の遅延あり)。

Timeout::Error (execution expired)

1
エラーのあるURL(Googleはおそらく私たちのために事前に考えていました)をブラウザにコピーしました。パスワードを入力すると、パネルで、信頼できるサイトだけでなくリクエストを送信する可能性が切り替わりました。
zmii

回答:


249

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

理由:Googleが不明な場所からのアクセスをブロックしていました(本番稼働中のアプリ)

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


3
これが実際に解決する正しい方法です(ただし、アカウントが危険にさらされる可能性があります)。しかし、それは機能します。
zakelfassi 2013

40
ここでアカウントアクセスを許可することも忘れないでください:: google.com/settings/security/lesssecureapps
Chauskin Rodion '26

lesssecureapps多要素認証を使用して、Railsサーバーのアプリ固有のパスワードを有効にすることで、設定を回避できました。
Chris Beck、

1
おそらく本番環境でメールを送信するためにマンドリルのようなサービスを使用する方が良い
コーディングは

lesssecureappsアカウント設定をオンにして、DisplayUnlockCaptchaページに移動し、[OK]をクリックしましたNet::SMTPAuthenticationError ...ContinueSignIn...。レール経由でメールを送信しましたが、同じエラーを受け取りました。それから私は10分後に同じことをやろうとしました、そしてそれは働き始めました。
Lev Lukomsky、2016

25

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

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 => "xyz@gmail.com",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Googleがログインの試みをブロックするのは事実ですが、https://www.google.com/settings/security/lesssecureappsで設定を変更して、アカウントが最新のセキュリティ標準で保護されないようにすることができます。


これを行う方法はありますか?たとえば、アプリをグーグルに登録することは可能ですか?
jphager2

24

解決しました!自分の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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}

1
ありがとうございました!この問題は私に多くの頭痛の種を引き起こし、結局私がしなければならなかったのは、これらの設定を使用し、Googleアカウント設定で安全性の低いアプリを許可するオプションを設定した後、Googleアカウントのパスワードを変更することでした。
Corey

「安全性の低いアプリを許可する」を設定し、デバイス(サーバーのIP)を信頼するようにGoogleに通知し、24時間以上待機した後...簡単なパスワード変更でGmailの認証の問題を修正しました。グーグルの誰かがおそらくそれを修正するべきです。;)
Jason R

私は同じ問題に直面していました。lessecureappsはすでに有効にしていますが、修正されません。パスワードを変更しただけで、とても魅力的でした。:)
Nikhil Sahu


13

上記のソリューションは正しい設定を提供しましたが(私はすでに持っていました)、問題を解決しませんでした。試行を続けた後、同じエラーが発生し続けました。結局、私はウェブから「CAPTCHAをクリア」しなければならなかった。詳細については、Gmailのドキュメントをご覧ください。

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


1
「CAPTCHAのクリア」ページへの直接リンク:accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

だいぶ後でなりますが、万が一のために役立ちます。GoogleAppsヘルプセンターを呼び出しただけで、(他の人と同じように)lesssecureapps設定を変更するだけでなく、ポートを465に変更するように指示されました。

私の場合、それはトリックをしました!



0

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

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: 'example@gmail.com' 
gmail_password: "your_example_email_password_here"

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


config.action_mailer.default_url_options = {host: "localhost:3000"}
cooxy

0

私も問題に直面し、Gmailの設定を調査した結果、解決策が見つかりました。

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

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

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


0

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

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


0

この問題を解決するには:

  • あなたが表示された場合:ネット:: SMTPAuthenticationError(。535-5.7.8ユーザー名とパスワードは不可)、その後、あなたは安全性の低いアプリがGoogleアカウントにログインできるようにする必要があります。安全性の低いアプリのログインを有効にするには、https//myaccount.google.com/lesssecureapps?。ただし、すべてのアプリにログインを許可します。カスタマイズする場合は、https//support.google.com/a/answer/6260879?hl = jaを参照してください。

  • 次に、Net :: SMTPAuthenticationError(534-5.7.14)が表示される可能性があるため、これを解決するには、pli = 1http://www.google.com/accounts/DisplayUnlockCaptchaを参照してください。その後、リダイレクトされるページから続行をクリックします。それはあなたのキャプチャを確認し、あなたのアプリはメールを送信するためにあなたのグーグルアカウントを使用することが確認されます。

注意: Gmailアカウントの正しい認証情報を使用していることを確認してください。

すべてのアプリを許可しない場合は、https://support.google.com/a/answer/6260879?hl = jaを参照してください安全性の低いアプリの代替手段使用するリンクから、安全性の低いアプリにGoogleアカウントへのアクセスを許可する別の方法をご案内します。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.