- ベストアンサー
サーバー内のテキストデータを拾って、メール送信するスクリプト
こんにちは、変動する表の作成スクリプトでは、callhiroさん、danyさんに多大なるご協力をいただきありがとうございました。 それで、また別件ですが、サーバー内にあるテキストファイルを読み取ってメール送信する方法をしりたいのですが、今回から質問を細切れにして、ひとつ解決したら締め切ることにいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
参考URLなんかいいんじゃないかと。 sendmail使うなら &jcode::convert(\$sub,'jis'); &jcode::convert(\$msg,'jis'); if( open( MAIL,"| $sendmail $mailto -t")) { print MAIL "X-Mailer: $mailer\n"; print MAIL $etc if $etc; print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $sub\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain\n\n"; print MAIL "$msg\n"; close( MAIL ); }else{ return "!!ERROR!!"; } とか。ちなみに $text = <IN>; だと最初の一行しか読まないので $text = join( '',<IN> ); にするといいです。 jcodeについてはこのへんが。必見です。 http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
その他の回答 (3)
- callhiro
- ベストアンサー率35% (54/152)
どうもこんにちは。 今回の質問ですが、みなさんの教えてくださってる方法で良いかと思います。 アドバイスですが、 CGIの本を参考にするのも当然良いですが やりたいことを実現しているフリーのスクリプトを分析したり、 複数の優良なCGIスクリプトをうまく組み合わせて オリジナルのものを作ると言うことも有効だと思いますので、 是非参考にしてください。 ではでは。
- cocky
- ベストアンサー率57% (232/402)
一つ補足。 「print OUT <<EOM;」のところは文末にセミコロン付け忘れてたので、もし動かす際は付けといて下さい。
- cocky
- ベストアンサー率57% (232/402)
sendmailが使えるサーバであれば、単純にテキストファイルをメール送信するだけなら、対象となるファイルを適当な変数に読み込んで、ヘッダ付けてsendmailに流し込めば済むと思いますが。 メールヘッダの書式についてはRFC822を読まれた方がいいでしょう。(メール題名にASCII以外の文字を使うんならRFC2047も必要) 試しに書くとすればこんな感じですかねぇ。(エラートラップ等は省略してます) open( IN, "< [ファイル名]" ); $text = <IN>; close( IN ); open( OUT, "| /usr/sbin/sendmail" ); print OUT <<EOM From: [発信元のアドレス] To: [宛先] Subject: [題名] $text . EOM close( OUT );
補足
素朴な疑問ですが、お答えいただいたスクリプトはどういうきっかけで、作動しますか。 また、時間指定をして予約送信するにはどうしたらいいでしょうか。
お礼
ありがとうございました。 この質問に関しては、よくわかりました。 どうやら、CGIだけでは自動的にメールを送信できないみたいですね。 また、何かありましたらお願いいたします。