naichi's lab

3日後の自分(他人)への書き置き

Rails、production環境のActionMailerでNet::ReadTimeout

ムームーメール

ムームードメインで unityroom.com ドメインを買ったんだけど、ムームーメールってサービスも提供してるみたい。

Webメールも使えるし送受信サーバーになるっぽいから契約してみた。

f:id:naichilab:20151108021028p:plain

config/environments/production.rb

Railsチュートリアルの内容をムームーメールように書き換える。 これであってるかは知らない。

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'unityroom.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
      :address        => 'smtp.muumuu-mail.com',
      :port           => '465',
      :authentication => :plain,
      :user_name      => ENV['MUUMUUMAIL_USERNAME'],
      :password       => ENV['MUUMUUMAIL_PASSWORD'],
      :domain         => 'unityroom.com',
      :enable_starttls_auto => true
  }

環境変数でユーザー名、パスワードをセットしてから rails s 起動。

メールが届かない

パスワードリセット画面からリセット要求をしてみる。(メール飛ぶはず)

だけどブラウザのローディングが終わらない。

1分ぐらい立ってエラー画面。

f:id:naichilab:20151108021504p:plain

production.log

D, [2015-11-08T01:57:35.392835 #79372] DEBUG -- : 
UserMailer#password_reset: processed outbound mail in 148.3ms
I, [2015-11-08T01:58:35.419810 #79372]  INFO -- : 
Sent mail to naichilab@live.jp (60026.8ms)
D, [2015-11-08T01:58:35.420032 #79372] DEBUG -- : Date: Sun, 08 Nov 2015 01:57:35 +0900
From: noreply@unityroom.com
~~~
ずらずらと送られるはずのメール文面が続く
~~~
I, [2015-11-08T01:58:35.420322 #79372]  INFO -- : Completed 500 Internal Server Error in 60301ms (ActiveRecord: 11.9ms)
F, [2015-11-08T01:58:35.421468 #79372] FATAL -- : 
Net::ReadTimeout (Net::ReadTimeout):
  app/models/user.rb:63:in `send_password_reset_email'
  app/controllers/password_resets_controller.rb:13:in `create'

うーむ。

なんかしらんけどNet::ReadTimeout。SMTPサーバにつながってないんやろな。

なんかドンピシャっぽい記事見つけた。

stackoverflow.com

config/environments/production.rbにtls: trueを追加してみる

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'unityroom.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
      :address        => 'smtp.muumuu-mail.com',
      :port           => '465',
      :authentication => :plain,
      :user_name      => ENV['MUUMUUMAIL_USERNAME'],
      :password       => ENV['MUUMUUMAIL_PASSWORD'],
      :domain         => 'unityroom.com',
      :enable_starttls_auto => true,
      :tls => true
  }

再チャレンジ!

届いた!

いい感じ。

f:id:naichilab:20151108022203p:plain

Railsはなかなか難しいねぇ。