ActionMailerでメールが送信されないない人はここを見直そう

Ruby on Railsで、ActionMailerでメールの送信をしてみたところ、ハマっちゃった。

同じようにハマってしまっているかもしれない人のために、アドバイスを残しておく。

ActionMailerはエラーを握りつぶす初期設定になっている

Ruby on RailsのActionMailerのドキュメント通り、こんな感じでActionMailerを実装した。

それでもって、ちゃんとdeliverしているにもかかわらず、送信したはずのメールが受信できない。

エラーや例外はというと、発生していない。

 
 

なんでやねん!(*´д)

 
 

そんな時は、config.action_mailer.raise_delivery_errorsの設定がfalseになっていないか確認しよう。

 

 

railsアプリケーションを作成すると、デフォルトではこれがfalseになっていて、メールの送信でエラーが発生しても、例外が発生しないようになっている。

SMTPの設定は済んでいるか

config.action_mailer.raise_delivery_errorsの設定をtrueにして、こんなエラーが出たら、メールの送信設定ができていない。

 

Completed 500 Internal Server Error in 10022ms

Errno::EACCES - Permission denied - connect(2):
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:540:in 
initialize'
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:540:in open'
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:540:in 
tcp_socket'
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:549:in block in do_start'
  C:/Ruby193/lib/ruby/1.9.1/timeout.rb:68:in 
timeout'
  C:/Ruby193/lib/ruby/1.9.1/timeout.rb:99:in timeout'
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:549:in 
do_start'
  C:/Ruby193/lib/ruby/1.9.1/net/smtp.rb:519:in `start'

 

ActionMailerって、SMTPとか使わずに単体でメールの送信できちゃうんだ、すげー。

と思っていたら、やっぱり設定は必要だった。

 

 

ちなみに、ここここのドキュメントを上から順に読んでいると、ハマる。

 

設定について全く触れないままあたかも設定不要な雰囲気で話が進んでいき、設定については終盤に記述がある。

 

序盤の話がシンプルなうちに動かして動作確認しようと思ったら動かなかった、というパターンでハマった。

 
 

ちなみに、文書を読む時は、必ず上から下までザザッと構成を確認してから読むと、最後のほうで書かれていることを知らずに最初でハマって止まっちゃう、といった無駄な時間を防ぐことができる。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1287