network.mail.Mail->send バグ
どんなバグか?
Linux PHP5.2.0
rhaco の Mailクラスでメール送信したとき、本文(message)の1行目が空行になる。
<?php require_once('rhaco/Rhaco.php'); Rhaco::import('network.mail.Mail'); : $mail = new Mail($from); $mail->to($to); $mail->subject($subject); $mail->message($message); $mail->send(); ?>
これで送信すると、1行目が必ず空行になります。
原因
PHP: mail - Manual の「例2 追加ヘッダを付加してメールを送信する」を参照
PHPのmail関数で送信してるのだが、mail関数の仕様では「ヘッダ項目をつなぐ区切り文字として改行をつかう」ということらしい。ヘッダ項目毎に改行としてるので、結果として1つ改行が多くなっており、それが空行になってしまっている。
修正
最後の改行を1つ削除してるだけです。
rhaco/network/mail/Mail.php(rev3131/3235)
/** * メールを送信する * * @param string $subject * @param string $message * @return boolean */ function send($subject="",$message=""){ /*** #viewing */ if (count($this->to) == 0) return false; if(!empty($subject)) $this->subject($subject); if(!empty($message)) $this->message($message); // return mail("",$this->_subject(),$this->_messages(),$this->_headers()); return mail("",$this->_subject(),$this->_messages(),preg_replace('/'.$this->eol.'$/','',$this->_headers())); }
-
- -
2008-06-30追記
以下でfix
http://fixdap.com/p/rhaco/14327/