web-dev-qa-db-ja.com

Rails 3を使用したGmail SMTP

Gmailアカウントを使用して確認メールを送信しようとしています。私は周りを見回しましたが、明白なことは何もありません。エラーなどはなく、送信しないだけです

これを初期化子として持っています:

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true


ActionMailer::Base.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => "gmail.com",
  :user_name            => "<address>@gmail.com",
  :password             => "<password>",
  :authentication       => "plain",
  :enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:Host] = "localhost:3000"
28
elasticmonkey

少なくともRails 3.2を使用すると、tlsmail gemは不要になります。

これで十分です

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'baci.lindsaar.net',
  :user_name            => '<username>',
  :password             => '<password>',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

All-mighty-guideから GmailのActionMailer設定

64
brutuscat

tlsmailをgemfileに追加

gem 'tlsmail'

実行:

bundle install

これらの設定をconfig/envirnoments/development.rbファイルに追加します

YourApplicationName::Application.configure do
    require 'tlsmail'
      Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
      ActionMailer::Base.delivery_method = :smtp
      ActionMailer::Base.perform_deliveries = true
      ActionMailer::Base.raise_delivery_errors = true
      ActionMailer::Base.smtp_settings = {
          :address => "smtp.gmail.com",
          :port => "587",
          :domain => "gmail.com",
          :enable_starttls_auto => true,
          :authentication => :login,
          :user_name => "<addreee>@gmail.com",
          :password => "<password>"
      }

    config.action_mailer.raise_delivery_errors = true

[email protected]が実際にメールを送信したことを確認してください。確認メールをGmailのSMTPサーバーから送信すると、一括送信がまったく送信されないため、これに関して問題が発生しました。

[email protected]にログインして、問題がなく、メールが送信されていることを確認することをお勧めします。

そうでない場合は、発信メールを送信するために Send Grid のようなサービスを試してみることをお勧めします。

または、サーバーを調べることもできます。または、開発中の場合は、log/development.log。実際にメールを送信しようとしていることをログで確認できると思います。

問題は、GoogleがローカルIPアドレスを信頼せず、メールが(スパムディレクトリにも)配信されないことです。これを回避する方法はありませんが、ホワイトリストのサーバーを使用します。

Herokuのような本番サーバーにアプリをデプロイしてテストし、そこでテストすることができます。

5
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domain               => 'baci.lindsaar.net',
  :user_name            => '<username>',
  :password             => '<password>',
  :authentication       => 'plain',
  :enable_starttls_auto => true  }

<username>は、実際のユーザー名を入力することを意味しますか? <password>

0
jsvisa