.





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");
fputs($mp, $headers);
fputs($mp, "?r?n");
fputs($mp, "$body");
pclose($mp);



実は、Perlのメール送信フォームでもここなどを読んで、STDIN(標準入力)から受け取る時は、open関数でやっているので、なんとなくこれでいけないかなぁとおもっていたところなので、とてもラッキー。これを使って問題なく完了。


しかし、apacheから呼んだ時に、system("echo hoge > /tmp/aaa.txt")などとした場合には、aaa.txtが/tmpに作成されなかったのだが、標準出力の方向はどこに行ってしまうのだろう?それは不思議だ。
itohさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (5471)


 





メインメニュー

カテゴリ一覧

Google Adsense

うぇブログ カレンダー


XoopsCube Ring
Amethyst Blue - BULLETIN


.