[PHP-users 30227] Re: 自分はPEAR使う派です。(Re:mail送信で教えてください)

KKuji_Y2a kkuji @ mwb.biglobe.ne.jp
2006年 9月 4日 (月) 03:49:26 JST


KK@IBです

またまた、参考になるお話ありがとうございます。
私のfunctionは、ご紹介いただいたサイトにあった、
http://wiki.poyo.jp/read/PHP/tips/mail/function_mail の
mail()は最終的には内部でphp.iniのsendmail_pathの値と等価のコマンドラインでコマンドを実行します.デフォルトでは「/usr/sbin/sendmail -t -i」なので,下記のようにすることとほぼ等価です.

$ /usr/sbin/sendmail -t -i <第5引数を指定した場合,それがここに来る>
To: <第1引数>
Subject: <第2引数>
<第4引数>

第3引数上記のようにコマンドを入力,メッセージを作成し,[Ctrl][D]で終了させるとコマンドsendmailは(正常に設定されていれば)内部queueにメールを蓄積し,メールを送信します.

をそのままなぞったものですが、ご指摘のような問題点があるわけですね。

headerの中にFROMを作り、あと、サニタライズですか?
サニタライズは、データを自分で作っている場合は問題になりませんね。
外からもらったときに怪しくないかチェックしろというアドバイスと解していいのでしょうね。

蛇足ですが、上鍵さんには独自の美学があるようですが、
>      例えば広い意味では envelop from が指定されていない, $header が
>    サニタイズされていないなどこれだけでは問題がありますね.本人がいい
>    ならいいんでしょうけど(苦笑
というシニカルな書き方より、もっとやさしい書き方のほうが、
読み手には感謝されますよ。きっと。
大変、知識も実力も実績もある方のようですね。
ご教授の内容としては、私も十分感謝しておりますですが。

書いていただいたことは、ありがたく学ばせていただきます。
個人的には、ご指摘の問題点を改善する必要はあるのでしょうが、
sendmailをなぞった(?)この関数は気に入っています。本人は、いい、です。
感謝、感謝。


>      上鍵です.こんにちは.
>      そもそも
>
> KKuji_Y2aさんの<581201c6cc35$978ea9c0$0200a8c0 @ 05Y2>から
>>もっとローレベルの手段でmail送信をするしかないのかな、
>>と悩んでいます。
>>ヒントでもいいので誰か教えてください。
>
>    ということなので PEAR::Net_SMTP などを紹介しただけです.PEAR な
>    り PHPMailer なりその他いろいろありますので,自作を含めてお好き
>    な物を使用するといいでしょう.
>
> KKuji_Y2aさんの<012201c6cf47$78044050$0300a8c0 @ 05Y2>から
>>前の投稿でも書きましたが、以下のような関数をmb_sendmailの代わりに使えば
>>いいかな、と今の段階では思っています。
>>function my_send_mail($to, $subject, $msg, $header) {
>>$fp = popen("/usr/sbin/sendmail -t -i","w");
>>fwrite($fp,"To: $to\n");
>>fwrite($fp,"Subject: $subject\n");
>>fwrite($fp,"$header\n");
>>fwrite($fp,"\n$msg\n");
>>pclose($fp);
>>return TRUE;
>>}
>
>      例えば広い意味では envelop from が指定されていない, $header が
>    サニタイズされていないなどこれだけでは問題がありますね.本人がいい
>    ならいいんでしょうけど(苦笑
>
>>PEARについては、PEARのサイトにsampleもあるし、
>>おっしゃるとおり、どこかに展開しておけば
>>よいのですが、そういう風に書いてある解説書は少ないのでは?
>
>      少なくとも上鍵が執筆するときはページ数に余力があればアプリケーショ
>    ン毎にインストールした方がいい(ケースバイケースですが)と書いていま
>    す.
>
> http://wiki.poyo.jp/read/Writing/marugoto_php/PEARdeApp/05.PEAR%20Install
>
> #ぉぉ readfile で URL アクセスとかダサ
>
>>本にはよく、ちゃんと、installのコマンドが書いてあるのですが、
>>レンタルサーバーでは、権限の関係ではじかれたりするので。
>
>      ちなみにコンソールが必要にはなりますが,公式マニュアルに共有サー
>    バーでの PEAR のインストールに関連するものが存在します.
>
> http://pear.php.net/manual/ja/installation.shared.php
>
>>ところで、ラッパーって、どんなラッパーですか?
>>ご教示願えれば幸いです。
>
>      超・極める! PHP にて日本語メールを送信するだけの割にでかいクラス
>    を作成した記事を執筆しています.個人的にはこれ位まじめに書いた実装
>    は PHP では見たこと無いのですが,参考になりましたらどうぞ.
>
> http://www.amazon.co.jp/exec/obidos/ASIN/4798111058
>
>      ちなみにメジャーなところではアシアルさんの「PHPプロ!」のメール
>    配信に使用されているようです.
>
> #サポートサイトになんかサンプルがない…



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