- ベストアンサー
Perlで添付ファイルを返信する方法を教えてください
perlでメールを返信するシステムを作成しているのですが 添付ファイルを指定できてかつコメント付でsendmailを使って メール返信する方法を知っていたら教えてください
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Q. cgiで添付ファイルを指定する。→cgiで添付ファイルを取得するのは 原理的に不可能なのでしょうか? 可能です。 ブラウザでフォームを表示 ↓ ファイルを添付 ↓ submit して、サーバへデータをPOST送信 ↓ CGIでデータを受け取って、デコード という一連の流れをひとつひとつクリアしていれば、OKです。 ブラウザからファイルを添付するフォームは、 静的なHTMLファイルだろうが、 CGIによる動的なものであろうが、 どちらにしろ同じHTMLであれば問題ありません。 ですので、ブラウザでフォームを表示したときに、 HTMLのソースを確認して、うまくいく静的なHTML と同じものなのか、 確認してみてください。 - (1) (2) データはサーバへPOSTされているかを、確認する。 Firefox のアドオン live http headers を使うと便利です。 フォームをperl によるCGIで表示する とのことですが、 「ファイルを添付するフォームを表示するCGI」 と 「ブラウザから受け取ったファイルを処理するCGI」 は、同じプログラムなのでしょうか。
その他の回答 (4)
- chaimasuka
- ベストアンサー率57% (26/45)
参考URL の方法ではいかがでしょうか。 CGI.pmがバージョン2.47以上という前提ですが。
お礼
ご教授ありがとうございます。参考にしたいと思います。
- maura
- ベストアンサー率46% (48/104)
sendmail コマンドを使わない方法なら Mail::Senderモジュールだと簡単だと思います。 日本語の和訳のドキュメントがないけと、多少Mailについて の知識があれば大丈夫でしょう。
- chaimasuka
- ベストアンサー率57% (26/45)
CPAN モジュールをインストール可能なら、(Windowsならppmで) MIME::Lite というモジュールを使うと便利です。 参考URL(perlfaq9 の邦訳)の下の方に、 How do I use MIME to make an attachment to a mail message? (メールメッセージに添付するためにどうやって MIME を使えばいいですか?) という説明があります。
お礼
ご指導ありがとうございます、よく調べて考えてみます。
補足
※補足 フォームに <form name="mailtome" method="post" action="/cgi-bin/mailex.cgi" ENCTYPE="multipart/form-data"> <input type=file name=upload_file size=XX> <input type="submit" name="Submit" value="送信"> と記述し、/cgi-bin/mailex.cgi には use CGI qw/:all/; $file = param('upload_file'); として実行すると$fileとして取得できます。 しかし、フォームではなくperlで print '<form name="mailtome" method="post" action="/cgi-bin/mailex.cgi" ENCTYPE="multipart/form-data">'."\n"; print '<input type=file name=upload_file size=XX>'."\n"; print '<input type="submit" name="Submit" value="送信">'."\n"; とし、以下のようにすると$fileが取得できません。 use CGI qw/:all/; $file = param('upload_file'); cgiで添付ファイルを指定する。→cgiで添付ファイルを取得するのは 原理的に不可能なのでしょうか?ご教授願います。
- SAYKA
- ベストアンサー率34% (944/2776)
メールで添付ファイルがどのような方法でくっついているのかまず知る必要が有るんじゃないかな? http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=%E3%83%A1%E3%83%BC%E3%83%AB%20%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%87%E3%83%BC%E3%82%BF%20base64
お礼
ご指導ありがとうございます、まずはインターネットでのメールの 仕組みを理解するようにしたいと思います。
お礼
ご指導ありがとうございます。 (2)データはサーバへPOSTされているかを、確認する。 Firefox のアドオン live http headers を使うと便利です。 → 「ブラウザから受け取ったファイルを処理するCGI」に 以下のように記述すると問題なく表示されます。 use CGI qw(:standard); require 'D:\inetpub\cgi-bin\exec\jcode.pl'; print "Content-type:text/html\n\n"; my(@query) = param(); foreach (@query) { $val = param($_); &jcode'convert(*val, 'sjis'); $buf{$_} = $val; print "buf{$_}=$buf{$_}<br>\n\n"; } フォームをperl によるCGIで表示する とのことですが、 「ファイルを添付するフォームを表示するCGI」 と 「ブラウザから受け取ったファイルを処理するCGI」 は、同じプログラムなのでしょうか。 違うプログラムです。 以上です