[PHP-users 20610]Re: mail関数で文字数制限?

ISIGE, Akira xia @ silvia.com
2004年 3月 1日 (月) 22:49:44 JST


いしげ です.

ハズしてるかもしれませんが……

On 2004/03/01 22:33:00 JST,
moonface <moonface @ olive.freemail.ne.jp> wrote:

> 一定の文字数以上を入力した場合、本文途中から化けてしまうのです。
> (986バイトまでは化けません)
(snip)
> mail関数には送信文字数に制限があるのでしょうか?

MTA の制限ではないでしょうか?

以前,改行なしで 1000バイト以上になる文章を mb_send_mail() で
送信しようとした際に,こちらで使っていた postfix が
途中で切ってしまい文字化けになったことがあります.


正確には,ISO-2022-JP の文章の 990 バイト目(だっけかな?)で
改行を入れて切る動作をするのですが,この時に,
切られた 2行目の先頭に半角スペースを挿入するため,
エンコードされた日本語を復元できなくなる,といった事情でした.

postfix 上でこの文字数を変更することもできましたが(smtp_line_length_limit),
あとで環境を変えられたりすると困るので,
長い行は送る前に自分で切るようにしました.

<?php
  $text = '長い長い(略)行';
  for( $i = 0; $cut = mb_strcut( $text, $i, 72 ); $i += 72 ){
    $tmp_text[] = $cut;
  }
  $text = join( "\n", $tmp_text );
?>

# この処理をもっとカッコよく行なう方法を募集中です :-)


--
ISIGE, Akira



PHP-users メーリングリストの案内