ローカル開発環境でMailHogを導入したところ、PHPのmailやmb_send_mailは正常に動作するのにFuelPHPのEmailクラスでのメール送信が動かなかった。
原因はMailHog/mhsendmailに指定できない引数がFuel内で使われているため。それらを無理やり削除したら動作したので備忘録的に残しておく。
手順
fuel/packages/email/config/email.php
を自分の環境のconfigにコピーし、sendmailのパスをmhsendmailに修正。
fuel/app/config/*****/email.php
//'sendmail_path' => '/usr/sbin/sendmail',
'sendmail_path' => '/usr/local/bin/mhsendmail', // 各自インストール先
※driverがmailでない場合はmailにする。
続いて、mhsendmailで使用できない引数の指定を削除する。
fuel/packages/email/classes/email/driver/mail.php
// if ( ! @mail(static::format_addresses($this->to), $this->subject, $message['body'], $message['header'], '-oi -f '.$return_path))
if ( ! @mail(static::format_addresses($this->to), $this->subject, $message['body'], $message['header']))
当然だが、上記修正はローカルのファイルだけにするようにする。
FuelのEmailパッケージのファイルを直接いじるため、あまり望ましい対応でないです。