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)
私は同じ問題を抱えていました。電子メールは開発から送信されましたが、本番からは送信されませんでした(Net::SMTPAuthenticationError
を取得していました)。これにより、問題はアプリの構成にあるのではなく、Googleにあるという結論に至りました。
理由:Googleは未知の場所からのアクセスをブロックしていました(本番アプリ)
Solution: http://www.google.com/accounts/DisplayUnlockCaptcha に移動して、続行をクリックします(これによりアクセスが許可されます)新しいアプリを登録するために10分間)。この後、本番環境のアプリがメールを送信し始めました;)
このソリューションは私のために働いています:
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 で変更できるので、アカウントはモダンによって保護されなくなりますセキュリティ標準。
解決しました!私は単にパスワードの変更私の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
}
次のリンクに移動して https://www.google.com/settings/security/lesssecureapps をオンにします
上記の解決策は正しい設定を提供しましたが(すでに持っていました)、問題は解決しませんでした。試行を続けた後、同じエラーが引き続き発生しました。結局のところ、私はWebから「CAPTCHAをクリアする」必要がありました。詳細については、 gmailドキュメント をご覧ください。
また、「CAPTCHAのクリア」ページに直接ジャンプすることもできます here 。
かなり後のことですが、万が一の場合に役立ちます。GoogleAppsヘルプセンターに電話して、lesssecureapps設定を変更するよう指示しました(他の全員と同様)。また、ポートを465に変更するよう指示しました。
私の場合、それでうまくいきました!
受け入れられた答えは非常に古いようで、その時点でフォローイン(より良い)ソリューションが存在していたかどうかはわかりません:
config.action_mailer.smtp_settings
で生成されたパスワードで個人パスワードを置き換えますこれで、メールの送信は完全に機能します!
onless secure apps
オプション( at here ).
https://myaccount.google.com/lesssecureapps
そしてCaptchaのロックを解除( link ):
https://accounts.google.com/DisplayUnlockCaptcha
私も問題に直面しました。Gmailの設定に関するいくつかの調査の後、解決策を見つけました。
Gmailで、設定に移動します。
[転送とPOP/IMAP]タブを選択します。
[IMAPアクセス]セクションで、[IMAPを有効にする]を選択します。
こんにちは、これも私のために働いたので、誰かがまだ問題を抱えているなら、これを試してください。
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"
ファイル内の認証には、メールとパスワードを使用する必要があります。