• ベストアンサー

Perlで添付ファイルを返信する方法を教えてください

perlでメールを返信するシステムを作成しているのですが 添付ファイルを指定できてかつコメント付でsendmailを使って メール返信する方法を知っていたら教えてください

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Q. cgiで添付ファイルを指定する。→cgiで添付ファイルを取得するのは 原理的に不可能なのでしょうか? 可能です。 ブラウザでフォームを表示 ↓ ファイルを添付 ↓ submit して、サーバへデータをPOST送信 ↓ CGIでデータを受け取って、デコード という一連の流れをひとつひとつクリアしていれば、OKです。 ブラウザからファイルを添付するフォームは、 静的なHTMLファイルだろうが、 CGIによる動的なものであろうが、 どちらにしろ同じHTMLであれば問題ありません。 ですので、ブラウザでフォームを表示したときに、 HTMLのソースを確認して、うまくいく静的なHTML と同じものなのか、 確認してみてください。 - (1) (2) データはサーバへPOSTされているかを、確認する。 Firefox のアドオン live http headers を使うと便利です。 フォームをperl によるCGIで表示する とのことですが、 「ファイルを添付するフォームを表示するCGI」 と 「ブラウザから受け取ったファイルを処理するCGI」 は、同じプログラムなのでしょうか。

yturugashi
質問者

お礼

ご指導ありがとうございます。 (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」 は、同じプログラムなのでしょうか。 違うプログラムです。 以上です

その他の回答 (4)

回答No.5

参考URL の方法ではいかがでしょうか。 CGI.pmがバージョン2.47以上という前提ですが。

参考URL:
http://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html
yturugashi
質問者

お礼

ご教授ありがとうございます。参考にしたいと思います。

  • maura
  • ベストアンサー率46% (48/104)
回答No.4

sendmail コマンドを使わない方法なら Mail::Senderモジュールだと簡単だと思います。 日本語の和訳のドキュメントがないけと、多少Mailについて の知識があれば大丈夫でしょう。

参考URL:
http://search.cpan.org/~jenda/Mail-Sender-0.8.13/Sender.pm
回答No.2

CPAN モジュールをインストール可能なら、(Windowsならppmで) MIME::Lite というモジュールを使うと便利です。 参考URL(perlfaq9 の邦訳)の下の方に、 How do I use MIME to make an attachment to a mail message? (メールメッセージに添付するためにどうやって MIME を使えばいいですか?) という説明があります。

参考URL:
http://perldoc.jp/docs/perl/5.6.1/perlfaq9.pod
yturugashi
質問者

お礼

ご指導ありがとうございます、よく調べて考えてみます。

yturugashi
質問者

補足

※補足 フォームに <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)
回答No.1

メールで添付ファイルがどのような方法でくっついているのかまず知る必要が有るんじゃないかな? 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

yturugashi
質問者

お礼

ご指導ありがとうございます、まずはインターネットでのメールの 仕組みを理解するようにしたいと思います。

関連するQ&A