CGI-BBS > 電子掲示板 > 簡易BBS > 画像をCGIに渡しメールに添付し送るには


カレッヂ
カレッヂ


質問者 なみや  投稿日 3/21(水) 10:25:18
はじめまして、若葉マークの質問ですがお願いします。

こちらのCGI掲示板のように自マシンの画像を選択し(1つだけ)、CGIに渡してメールに添付し送信するにはどうしたらいいんでしょうか?こちらで紹介されているCGIは私に理解するには高度でわかりませんでした。どなたかどうか教えてください。是非、よろしくお願いします。
回答者 いのちゃん  [削除]  投稿日 3/21(水) 11:56:15
失礼ながら若葉マークの方にしてはハイレベルなドライブテクニックが要るような
ご質問すが貴殿のご意見を当方なりに分解して理解すれば次のようになります。

CGI掲示板に表示した画像を配信機能設定してある掲示板から新規投稿して送信され
た場合に表示してあった画像も一緒に添付して送信したいと言うように解釈しまし
たがこの解釈は間違っているでしょうか?

そう言う意味であれば技術的には可能かと存じますがこのようなケースを今迄取り扱
った事が無い為に斬新的なご意見としてちょっと驚いております。(^^)

しかし乍らよく文章を読んでみますとCGIを未だ十分に理解していないとも記述され
ている。従って仰っている意味の中に矛盾な点があってどうお返事申し上げていい
のか当方のみならずその他の回答者も迷っているのものと存じますので画像をメール
で送信する場合の一般的なご説明で先ず切り出しみたいかと存じます。

Windowsの場合の例ですがエクスプローラに収納されております例えばC:\pals\wai.
gifをメールに添付して送信する場合は当方の使用しておりますEudora Proの場合で
あればエクスプローラの表示画面を小さく(半分位にして左側に置く)してCtrl+左マ
ウスで掴んだまま(grab & drop)でEudora ProのAttached: にC:\pals\wai.gifを
落とす。

この時にEudora Proも画面表示を半分位(右側に置く)にするかまたは表示画面を右に
ずらして上述のgrab & dropの作業が出来る状態にしておく。一度そのような手配で
送信設定した状態で自分宛てに送信して受信した場合に画像が見られる(開く)か?を
チェックして見て下さい。
質問者 なみや  [削除]  投稿日 3/21(水) 13:49:08
すみません、質問の仕方があまり上手くなく理解しずらかった事と思います。すみませんでした。再度、書かせていただきます。HTMLに<input type=file name="pic">といったタグを使い、これに画像ファイルを指定します。この指定した画像をメールの添付ファイルとして送信したいのです。この一連の作業をCGIで実現したいのですが。是非是非ご教授をお願いします。
回答者 いのちゃん  [削除]  投稿日 3/21(水) 14:21:03
>HTMLに<input type=file name="pic">といったタグを使い、これに画像ファイルを指定しま
>す。この指定した画像をメールの添付ファイルとして送信したいのです。この一連の作業を
>CGIで実現したいのですが


済みません勉強不足の為に益々困惑して参りした。ご指摘のタグを見た事がないという
事(ファイルの中身は何)と何故にCGIで実現したいのか?そうしないと目的が遂行出来
ない理由が分かりません。

単なるそうしたいだけかも知れませんが添付メールの添付送信は前回ご説明の通りですが
この方法では駄目でしょうかねぇ。
回答者 まさ  [削除]  投稿日 3/21(水) 18:27:51
Net::SMTPとMIME::Entityのモジュールを使えば、非常に簡単に添付ファイルを送ることが
できます。スクリプトの長さは、最短で20行ぐらいです。

もし、モジュールのインストールが不可能であれば、Perl5標準ライブラリーのCGI.pmを使え
ば可能でしょう。

これらを何も使わずに例えば、cgi-lib.plなどだけ使用してもスクリプトを書く事ができま
すが、スクリプトが複雑になり、あまりお勧めできません。

わたしは初心者であればあるほど、モジュールを使うべきだと思います。

回答者 まさ  [削除]  投稿日 3/21(水) 20:09:13
スクリプトも書いておきます。
動作確認してあるので動きます。
なお文字コードはEUCで書かないと文字化け起こします。

--------------------------------------------------
use CGI;
use Net::SMTP;
use MIME::Entity;

#データを受け取る
$query = new CGI;
$file_name = $query->param('pic');

#オブジェクトの作成
#SMTPサーバのドメインを指定
$smtp = Net::SMTP->new('xxx.co.jp');            

#ヘッダ部の組み立て
#送信元
$smtp->mail('foo@xxx.co.jp');
#宛先
$smtp->to('bar@xxx.co.jp');

#データ部の組み立て
$smtp->data();
$oMime = MIME::Entity->build(
    Subject  => "添付ファイルの送信",
    Data     => ["添付ファイルの送信\n"]);

#添付ファイルをつける
$oMime->attach(
    Path     => "$file_name",
    Type     => "Application/octet-stream",
    Encoding => "Base64"
);
$smtp->datasend($oMime->stringify);

# メール送信
$smtp->dataend();

#SMTP接続の終了
$smtp->quit;

返信(回答)する


Web裏技