2004/09/26
|
PHPメモ sendmailで直接メール
カテゴリ : PHPメモ
執筆者:
itoh (7:19 pm)
|
sendmailを使って直接メール送信をしたい。 と思った。理由は、メールを純粋に転送したいため。 PHPでは、mb_send_mailというメールを送るだけならとても便利な関数があるのだが、今回はコレを使うとヘッダ情報が全部吹っ飛んでしまう。まぁ、別に良いと言えば良いのだが、なんかいやだ。 そう思って、「直接systemの/usr/sbin/sendmailをたたいてやればよいのでは?」と思って試行錯誤。 とりえあず、 system("echo ?"{$mailcontent]}?" | /usr/sbin/sendmail -i {$to_addr} "); などが最初に考えられるので、やってみるがうまくいかない。echo $mailcontentのぶぶんがうまく行かないようで、空のメールが送られる。 sendmailのコマンドの使い方が悪いのかと調べてみたけれど、よくわからない。うーん。困った。 そこへ、たまたま見た、PHP-users-ML:23361で「あぁ。これか」というのをみた。 引用: $mp = popen("/usr/sbin/sendmail -f $from $to", "w"); 実は、Perlのメール送信フォームでもここなどを読んで、STDIN(標準入力)から受け取る時は、open関数でやっているので、なんとなくこれでいけないかなぁとおもっていたところなので、とてもラッキー。これを使って問題なく完了。 しかし、apacheから呼んだ時に、system("echo hoge > /tmp/aaa.txt")などとした場合には、aaa.txtが/tmpに作成されなかったのだが、標準出力の方向はどこに行ってしまうのだろう?それは不思議だ。 |