PHPでドコモに絵文字入りメール送信する際の注意点-『500 Line Too Long』エラー-

By nakayama - 09/05/29 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

『ke-tai.org』さんでPHPで絵文字メール送信方法の解説をして頂いていますが、1点指摘を。

ke-tai.org – 『ケータイに絵文字入りメールを送信するには(iモード編)

$body = '[iの絵文字]モードの絵文字入り[キラキラの絵文字]の[メールの絵文字]本文デス。';
$body = base64_encode($body);
// メールを送信
$res = mail($to, $subject, $body, $headers);

 
ドコモの場合body部をbase64_encodeで処理しただけだと『500 Line Too Long』エラーで返ってきてしまうケースがあります。
 

***.***.***.***_failed_after_I_sent_the_message./Remote_host_said:_500_Line_Too_Long_/

 
これがいったい何のエラーかというと、ドコモの場合は段落なしの長文メールを送るとエラーになるようです。
 
てきとー管理者にっき! – 『ドコモのi-modeメールで「500 Line Too Long」のエラー
PHPプロ – 『phpからDoCoMoへのメール
 
文字列にbase64_encodeを掛けただけですと改行なしになってしまうので文章量が多いとメールが送れなくなります。
 

$body = chunk_split(base64_encode($body));

として一定間隔で改行を入れるようにする必要があります。
 
ちなみにこのエラーはドコモだけでSoftbank、AUでは発生しません。