PEAR Mail ライブラリをインストールして、PHP の mail() 関数よりもはるかに優れた動作をするようになりました。ただし、送信されるすべてのメールで error_log に表示される厳格な標準通知を取得しています。それらは致命的ではありませんが、ログを台無しにします。
制御コードは次のとおりです。
$body = $_POST['message'];
//using sendmail on backend
$params['sendmail_path'] = '/usr/sbin/sendmail';
//using factory method
$mail_object =& Mail::factory('sendmail',$params);
//loop through selected users to send
for ($i=0;$i<count($recipients);$i++){
if (!empty($recipients[$i]['email'])&&($recipients[$i]['alt_email'])){
//concatinate email and alt_email
$address = $recipients[$i]['email'].",".$recipients[$i]['alt_email'];
}
else {
//only one user address
$address = $recipients[$i]['email'];
}
//send the mail instance
$mail_object->send($address,$headers,$body);
if (PEAR::isError($mail_object)) {print($mail_object->getMessage());}
} //close the for loop
次に、エラー通知がログに記録されました。
PHP の厳格な基準: 非静的メソッド Mail::factory() は、emailSend.php の 48 行目、referer: などで静的に呼び出されるべきではありません。
PHP の厳格な標準: 非静的メソッド Mail_RFC822::parseAddressList() を静的に呼び出すべきではありません。$this が 253 行目の /opt/local/lib/php/Mail.php の互換性のないコンテキストからのものであると仮定すると、referer: などです。
PHP の厳格な標準: 非静的メソッド PEAR::isError() は、emailSend.php の 65 行目、referer: などで静的に呼び出されるべきではありません。
私はこれらを無視することができますが、誰かがこれに関する提案/経験を持っている場合は、むしろ問題を修正したいと思います. グーグルで調べましたが、すべてが古いです。
ナシ 1.9.0
PHP 5.3.2