FuelPHP1.6系でEmailパッケージの使用とハマったとこ
FuelPHPに元から付いているEmailパッケージを使ってみる。以下の公式の解説を見る限りかなりシンプルな実装になる。
Email パッケージ
http://press.nekoget.com/fuelphp_doc/packages/email/introduction.html
Email パッケージの使用方法
http://press.nekoget.com/fuelphp_doc/packages/email/usage.html
Email パッケージの使用方法どおりにとりあえず実装して実行したものの、エラーになる。Exceptionをcar_dumpで見てみたところ以下のメッセージが。
Failed sending email
ぐーぐる先生にお伺いしつつパッケージをパッケージのソースを見てエラーの発生場所を突き止めた。fuel/packages/email/classes/email/driver/mail.phpに以下の記載がある。
・ ・ ・ protected function _send() { ・ ・ ・ if ( ! @mail(static::format_addresses($this->to), $this->subject, $message['body'], $message['header'], '-oi -f '.$return_path)) { throw new \EmailSendingFailedException('Failed sending email'); }
FuelPHPのEmailパッケージは結局のところphpのmail関数で送っていたのだった。もしやmail関数は何かメールサーバーを立てないと使えないのでは?と考えまたぐーぐる先生にお伺い書けてみた。
» phpのmb_send_mail()利用にかんして
https://forums.ubuntulinux.jp/viewtopic.php?id=7394
やはりそうだったみたい。PEAR::MailはPHPだけでメールを送れるけど、mail関数はsendmailやSMTPが必要みたい。急遽レンタルサーバーにてメールアカウントを設定。fuel/packages/email/config/email.phpを
fuel/app/config/email.phpにコピーして、以下を修正。
return array( 'defaults' => array( 'useragent' => 'FuelPHP, PHP 5.3 Framework', 'driver' => 'smtp', ・ ・ ・ 'smtp' => array( 'host' => 'server.host.jp', 'port' => 25, 'username' => 'account@server.host.jp', 'password' => 'password', 'timeout' => 5, ),
これでやっと動くようになった。。。いつも思うんだけどmail関数のマニュアルとかmail関数使用するパッケージとか、メールサーバーの準備が必要不可欠ってことをどこかに書いてほしい。設定だけですぐ使える思えちゃう。そしたらこんな迷わないのに。ヽ(`Д´#)ノ ムキー!!