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に変更)が成功しませんでした。
助けてくれてありがとう!
ドメインを正しく設定する必要があります。現在、コードに「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
}
メールを送信するためにgmailを使用しているときに(Google Appsアカウントに共通)Net :: SMTPAuthenticationErrorのようなエラーが発生した場合は、 gmail設定 にアクセスし、安全性の低いアプリを有効にしてアプリケーションを動作させます。
私のためにこれを機能させる方法を検索するために数時間後、私はそれを機能させる方法を見つけます。私にとっては、2段階認証プロセスを行い、Gmailアプリケーションのパスワードを使用する必要がありました
2段階認証(2要素認証とも呼ばれます)を有効にすると、アカウントにセキュリティのレイヤーが追加されます。知っているもの(パスワード)と持っているもの(電話に送信されるコード)でサインインします。
2段階認証プロセスを設定する
アプリパスワードは16桁のパスコードで、アプリまたはデバイスにGoogleアカウントへのアクセスを許可します。 2段階認証プロセスを使用していて、Googleアカウントにアクセスしようとしたときに「パスワードが正しくありません」というエラーが表示される場合は、アプリパスワードで問題を解決できる場合があります。ほとんどの場合、アプリまたはデバイスごとにアプリパスワードを入力する必要があるのは1回だけなので、暗記する必要はありません。
アプリのパスワードを生成する方法
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",
}
ログインプロセスにはOAuth 2.0を使用することをお勧めします。この設定はGoogleにとって「それほど安全ではありません」が、彼らは許容します。 Googleアカウントの設定で「安全性の低い接続」を許可するか、OAuth-wayを使用する必要があります。 https://developers.google.com/identity/protocols/OAuth2
Rubyのライブラリはまだアルファ版です。 OAuth用にActionMailerを拡張しているgemがあるようですが、私はそれらを使用したことはありません。