[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 メーリングリストの案内