[PHP-users 17020]Re: mb_send_mail()とmb_encode_mimeheader()
Moriyoshi Koizumi
moriyoshi @ at.wakwak.com
2003年 7月 28日 (月) 22:51:04 JST
"Shuji TANAKA" <stanaka @ longpro.ne.jp> wrote:
> mb_send_mail()は第三引数に追加のヘッダを渡すことができますが,どうやらここ
> に日本語を渡してもMIMEエンコードしてくれないようです.そのために,
> mb_encode_mimeheader()があってこれでエンコードしてから渡してやるべきなような
> のですが,この関数では,文字列の先頭から,ASCII範囲外の文字が出てくる場所ま
> でを走査し,そこから文字列の最後まで全てをbase64エンコードしてしまうようで
> す.
> 規格としてはこれでいいのかもしれませんが,たとえばFrom:ヘッダとして,
>
> 「From: 日本語名称 <youraddress @ your.domain>」
>
> のような文字列を設定してmb_encode_mimeheader()に渡し,結果がmb_send_mail()
> 経由でsendmailに渡ると,sendmailがFrom:ヘッダのMIMEエンコードされた文字列を
> ローカルのメールアドレスと見なして,自動的に文字列の後尾に「@your.domain」の
> ようなドメイン名を設定してしまうということが起こりました.
もっと前からちゃんと考慮していればよかったのですが、確かに、いわきりさんの
おっしゃるとおり、メールアドレスの部分 ("<" ">"で囲まれた部分) は、本来で
あれば MIME エンコードされるべきではないと考えられている部分です。
# 実は自分専用のメール送受信用クラスを使っていたので…。
# しかし、MIME エンコードでコードセットが US-ASCII になっていた場合は
# どうなるのだろう? (実際にそんな妙なことをする MUA / MTA は見たことが
# ありませんが)
従って、mb_send_mail() の内部の実装を修正することで対処されるべき問題とい
えるでしょうか。しかし、実装するとして、かなりトリッキーな処理が要求される
ことは間違いなさそうですが。開発者のみなさんいかがでしょう?
PHP-users メーリングリストの案内