[PHP-dev 1187] Re: PHP4.4.1でmb_send_mailの第5引数が利かなくなってる

Rui Hirokawa rui_hirokawa @ ybb.ne.jp
2005年 11月 6日 (日) 12:40:13 JST


廣川です。

下記、1番目については、改行処理の初期値をsizeof("Subject:")に
しておくような雰囲気ですね。
2番目については、Unix/Windowsに限らずヘッダ部は"\r\n"で改行する
ようにしてしまえば良いのではないかと単純に思いますが、
何か不都合あるのでしょうか。
3番目は、本当にやるべきなのかも含めて少し面倒な話かもしれません。

On Sat, 05 Nov 2005 19:31:52 +0900
Tadashi Jokagi <ml @ elf.no-ip.org> wrote:

>       上鍵です.こんにちは.
> 
> Rui Hirokawaさんの<20051105141734.FABA.RUI_HIROKAWA @ ybb.ne.jp>から
> >mb_send_mail()については、改行コードに\nがハードコードされている
> >ところやヘッダが長い場合の折り返しについて問題点として指摘されて
> >いた気がしますが、具体的にはどんな問題だったでしょうか?
> 
>       mb_send_mail() は最終的に mail() に橋渡しするのですが,下記の
>     ような問題があります.
> 
>     ・Subject が RFC 違反
>       メールヘッダーはフィールド名とフィールド値(と改行文字)の合計が
>       76 文字未満としていますが,mb_encode_mimeheader() は 74 文字で
>       ハードコーディングされているため,フィールド値だけで 74 文字で
>       改行されます.よって 1 行目が「Subject:」の分長くなります.
>     ・Windows は改行文字は「\r\n」でなければ RFC 違反
>       Windows は引数で渡された値がそのまま SMTP プロトコルに使用され
>       ます.SMTP は CR+LF の改行文字でなければならないので,LF だけ
>       では RFC 違反になります.
>     ・いきなり第 2 引数あるいは(省略値)でエンコードしようとする
>       「[php-users:####]」のように ASCII で始まる場合でもいきなり MIME
>       エンコードしようとします.その為,一部の ML ドライバーやメーラー
>       などで問題が出る場合があるようです.
> 
> #ある程度細かいことは自分の blog に書いてあるのですが
> 
>       一応現在 Text_I18n という名前のクラスを作成しており,iconv,
>     mbstring を選択してマルチバイト文字列を扱えるようなものを作成しよ
>     うとしています.MIME エンコードは iconv の方がより正確に行えること,
>     海外では mbstring より組み込まれている可能性は非常に高いので,むし
>     ろ最近は iconv に期待したいところです.
> 
> #iconv も箇条書きの 3 つ目の問題が BASE64 の場合だけあるんですよね.
>  がっくししたので自分でエンコード処理書いちゃいました
> 

-- 
Rui Hirokawa <rui_hirokawa @ ybb.ne.jp>




-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.362 / Virus Database: 267.12.8/162 - Release Date: 2005/11/05



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