mail_fetchとcyrusで「Message contains NUL characters」が出ないようにする方法
fetch.phpに1行追加すればOK。
while (list($lineNum, $line) = each ($MessArray)) { $Message .= $line; } $Message = str_replace("\0", '', $Message); // added
cyrusはメール内のNUL文字を許可しない。そのため、SquirrelMailのmail_fetchプラグインでNUL文字を含むメールをPOP受信すると、「Message contains NUL characters」エラーが発生してしまう。
これを防ぐには、cyrusメールボックスへのコピー前にNUL文字を削除すればよい。mail_fetch ver1.3.0で動作を確認した。
追記(2007-11-17)
上記のやりかただと、$Messageが馬鹿でかい場合にメモリが足りなくなることがあることに気づいた。下記のほうが良いだろう。
while (list($lineNum, $line) = each ($MessArray)) { $line = str_replace("\0", '', $line); // added $Message .= $line; }