web-dev-qa-db-ja.com

Rails 4、SMTP設定を正しく構成する方法(gmail)

Rails 4.でコンタクトフォームを作成しようとしています。ここでいくつか掘り下げて、ほとんどのものを機能させることができました。 (ここで@sethfriの仕事をフォロー Rails 4のフォームメーラーに問い合わせる

今、フォームボックスに記入して送信することができます。 Railsサーバーでは、メールは自分のメールアドレスに送信されましたが、Gmailボックスには何も届かないので、SMTP設定が正しくないと思います。私のSMTP設定は次のとおりです。

... config/environments/development.rb

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

  config.action_mailer.default_url_options = { :Host => 'localhost:3000' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "[email protected]",
    :password => "myGmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
  } 

また、.../config/initializers/smtp_settings.rbに追加しました

ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "[email protected]",
    :password => "gmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
}

私は何が欠けている/間違っていますか?私はいくつかのことを試してみました(default_urlをポート1025に変更、:port => "587"を:port => 587に変更)が成功しませんでした。

助けてくれてありがとう!

47
ResrieC

ドメインを正しく設定する必要があります。現在、コードに「mydomain.net」が投稿されています。 gmail経由で送信する場合は、gmail.comに変更します。

config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            '[email protected]',
  password:             'yourpassword',
  authentication:       :plain,
  enable_starttls_auto: true
}
54
TarunJadhwani

メールを送信するためにgmailを使用しているときに(Google Appsアカウントに共通)Net :: SMTPAuthenticationErrorのようなエラーが発生した場合は、 gmail設定 にアクセスし、安全性の低いアプリを有効にしてアプリケーションを動作させます。

39
Kim Miller

私のためにこれを機能させる方法を検索するために数時間後、私はそれを機能させる方法を見つけます。私にとっては、2段階認証プロセスを行い、Gmailアプリケーションのパスワードを使用する必要がありました

2段階認証(2要素認証とも呼ばれます)を有効にすると、アカウントにセキュリティのレイヤーが追加されます。知っているもの(パスワード)と持っているもの(電話に送信されるコード)でサインインします。

2段階認証プロセスを設定する

  1. 2-Step Verification ページに移動します。 Googleアカウントにサインインする必要がある場合があります。
  2. 右側の[2段階認証プロセス]ボックスで、[セットアップを開始]を選択します。
  3. 段階的な設定プロセスに従います。

アプリパスワードは16桁のパスコードで、アプリまたはデバイスにGoogleアカウントへのアクセスを許可します。 2段階認証プロセスを使用していて、Googleアカウントにアクセスしようとしたときに「パスワードが正しくありません」というエラーが表示される場合は、アプリパスワードで問題を解決できる場合があります。ほとんどの場合、アプリまたはデバイスごとにアプリパスワードを入力する必要があるのは1回だけなので、暗記する必要はありません。

アプリのパスワードを生成する方法

  1. アプリのパスワード ページにアクセスします。 Googleアカウントにサインインするように求められる場合があります。
  2. 下部にある[アプリの選択]をクリックして、使用しているアプリを選択します。
  3. [デバイスを選択]をクリックして、使用しているデバイスを選択します。
  4. 生成を選択します。
  5. 指示に従って、デバイスにアプリのパスワード(黄色のバーに16文字のコード)を入力します。
  6. 完了を選択
7
Gabriel Sigouin

2019、Rails 5更新された回答:

  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_caching = false
  config.action_mailer.default_url_options = { Host: 'localhost', port: 3000 }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address: "smtp.gmail.com",
    port: 587,
    authentication: "plain",
    enable_starttls_auto: true,
    user_name: "[email protected]",
    password: "tutorialrails", 
    domain: "smtp.gmail.com",
    openssl_verify_mode: "none",
  }
1
truongnm

ログインプロセスにはOAuth 2.0を使用することをお勧めします。この設定はGoogleにとって「それほど安全ではありません」が、彼らは許容します。 Googleアカウントの設定で「安全性の低い接続」を許可するか、OAuth-wayを使用する必要があります。 https://developers.google.com/identity/protocols/OAuth2

Rubyのライブラリはまだアルファ版です。 OAuth用にActionMailerを拡張しているgemがあるようですが、私はそれらを使用したことはありません。

1
DOK