• ベストアンサー

複数のアドレスを設定できるメールフォーム

Marionetteの回答

回答No.5

大きく勘違いしていたようですみませんです。 てっきり管理部署から、各店舗あてに共通の連絡メールを出すものと早合点してしまいました(自分がそういう要求で作ったもので)。 それで、肝心のメールアドレス判定部がないので何ともいえませんが、気づいた点を二つだけ。 # エラーチェックはメールアドレスだけでしょうか。 # 送信者 -問い合わせをした人- のアドレス形式の正当性チェックや入力項目の # 抜けなどは確認表示部にあるのでしょうか? 本題とは無関係でしょうが、フォームの「Content-type」と「<HTML>」のあいだに改行のみの行が必要です。 > foreach (@file) { > local($id,$ps,$URL,$mail)= split(/,/,$_); > if ($in{'id'} eq $id){ よくあるミスですが、このあと何もしていなければ「$mail」には、改行コードが含まれていると思います。 比較対象には含まれていないのではありませんか? chomp($mail); で改行コードを取り去って確認してみてください。 間違ったアドバイスかもしれませんが、その際はご容赦ください。 ------------------------------------------------ > html→htmlにデータを送ることは出来ないと考え、「index.html」をCGI内部に格納しました。 もちろんそうです、独立したままCGIかしたらより簡単だけどと思っただけです。 規模が小さくて把握できるなら、取り込んで一つのCGIにしても全然かまいません。

master-3rd
質問者

補足

すばやい返答ありがとうございます。 なんとなくですが、丸々載せたほうが早そうですね。この状態で、送信しようとすると、「送信アドレスが正しくない」のエラーが出ます。 多分ですが、ちゃんとリスト分割・チェックが出来てないためエラーになるのではないかと… --------------------------------------------- #!/usr/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; $sendmail = '/usr/sbin/sendmail'; $admin_name = '社名'; $gdata = "../sellguide/passsave.dat"; &ReadParse; if ($in{'mode'} eq "form"){ &form;} if ($in{'name'} eq ''){ &error('入力エラー','名前が入力されていません');} if ($in{'email'} eq ''){ &error('入力エラー','メールアドレスが入力されていません');} if ($in{'subject'} eq ''){ &error('入力エラー','件名が入力されていません');} if ($in{'text'} eq ''){ &error('入力エラー','メッセージが入力されていません');} unless($in{'email'} =~/^[\w\-+\.]+\@[\w\-+\.]+$/i){ &error('入力エラー','メールアドレスを正しく入力してください');} open (FILE,"$gdata"); @file = <FILE>; close FILE; foreach (@file) { local($id,$ps,$URL,$mail)= split(/,/,$_); chomp($mail); if ($in{'id'} eq $id){ $message = <<_MESSAGE_; Subject: $in{'subject'} From: $in{'email'} To: $mail Name $in{'name'} Address $in{'email'} Url $in{'url'} Message $in{'text'} _MESSAGE_ &jcode'convert(*message,'jis'); open(EMAIL,"|$sendmail $mail"); print EMAIL $message; close(EMAIL); print <<_END_; Content-type: text/html <html> <head> <title>送信完了</title> </head> <body> <table border=0 align=center> <tr><td align=center>送信完了</td></tr> <tr><td>御意見・御感想ありがとうございました。<br> 皆さんの御意見などを反映させて、運営していきたいと思います。<p> 送信内容をご確認ください。<p align=right>$admin_name</p></td></tr> </table><p> <table border=1 align=center> <tr><td align=center>お名前</td><td>$in{'name'}</td></tr> <tr><td align=center>メールアドレス</td><td>$in{'email'}</td></tr> <tr><td align=center>件 名</td><td>$in{'subject'}</td></tr> <tr><td align=center>ホームページ</td><td>$in{'url'}</td></tr> <tr><td align=center>メッセージ</td><td width=400>$in{'text'}</td></tr> </td></tr> </table> </body> </html> _END_ exit; }&error('入力エラー','送信アドレスが正しくありません。'); exit; } sub error { print <<_ERROR_; Content-type: text/html <html><head><title>送信エラー</title></head><body> <p align=center><font size=5 color=#ff0000>送信エラー</font></p> 以下のエラーが原因でメールを送信できませんでした。<p><font color=#ff0000> $_[0]</font><br>$_[1]<p>$admin_name</body></html> _ERROR_ exit; } sub form { print <<_html_; Content-type: text/html <HTML> <HEAD> <TITLE>メールフォーム</TITLE> </HEAD> <BODY> <P align="center"><FONT size="5">メールフォーム</FONT></P> <FORM method="POST" action="mail.cgi"> <INPUT type="hidden" name="id" value="$in{'id'}"> <CENTER> ----------$in{'id'}へのメール送信----------<BR><BR> <TABLE border="0" align="center"> <TBODY> <TR> <TD align="center">お名前</TD> <TD><INPUT type="text" name="name" size="40"></TD> </TR> <TR> <TD align="center">メールアドレス</TD> <TD><INPUT type="text" name="email" size="40"></TD> </TR> <TR> <TD align="center">件 名</TD> <TD><INPUT type="text" name="subject" size="40"></TD> </TR> <TR> <TD align="center">メッセージ</TD> <TD><TEXTAREA name="text" cols="50" rows="8" wrap="hard"></TEXTAREA></TD> </TR> <TR> <TD></TD> <TD><INPUT type="submit" value=" 送 信 ">&nbsp;&nbsp;<INPUT type="reset" value=" 取 消 "></TD> </TR> </TBODY> </TABLE> </CENTER> </FORM> </BODY> </HTML> _html_ exit; }

関連するQ&A

  • cgiを使ってメールフォームを作りたい

    cgi初心者です。 ただ今勉強中です。 ホームページ上にお問い合わせフォームを 設置したいと考えています。 以前はHTMLでクリックすると自動的にメールソフトが立ち上がり そのメールソフトの送信ファイルに送信先のアドレスが書き込まれている ような仕様をしていましたが、これだとスパムメールに狙われる 原因となるというようなことを聞きましたので、メールフォームを 立ち上げて、そこで書き込まれたアドレスをこちらのメールソフトで 受信する仕組みにしたいと思っています。 無料公開されている色んなパターンのhtmlファイルとcgiファイルの 組み合わせによるメールフォームは、どれも一長一短あって、 やはり出来れば自分で設定できるにこしたことないとないなぁと思い、 格闘中です。 現在、そういった無料版のメールフォームのファイルを 自分の環境に合わせる設定は出来る知識はあります。 (PERLのパス、CGIのディレクトリ、SENDMAILのパス、 設定するパーミッションの値をどうするか程度の知識) しかし、自分の作成したファイル、仮にindex.htmlファイル上で メールアドレスを書き込む枠と送信ボタンを増設するには どうすればいいのかがわかりません。 どのような方法があるか? どのようなことを学んでいけばいいのか? どのような参考サイトがあるか? どのような参考図書があるか? など、何でもよろしいのでアドバイス頂けると 有り難いです。 よろしくお願いいたします。

  • WEB上から好きなアドレス宛に送信できるメールフォーム?

    特定のアドレス宛に送信される メールフォームはいくらでもありますが、 自由に送信先を入力できて、ファイルも添付 できるメールフォームのフリーCGIスクリプトって ありませんでしょうか?? 検索して探していますが、なかなかありません。 ご存知の方、是非、教えてくださいませ。

    • ベストアンサー
    • CGI
  • 単一ファイルのみのメールフォーム

    ホームページ製作中です。 各店舗の売り上げをエクセルファイルで送ってもらうようにしようかと考えています。 パスワードで管理されたページにメールフォームをつけ、そこからファイルを送ってもらおうかと考えているのですが、良いCGIを見つけることが出来ません。 したいことはいたってシンプル(?)です。 ページに、店舗名のプルダウンメニュー(cookieが使えるのならプルダウンにする必要は無いかな?)、ファイル指定の窓と「参照」ボタン、「送信ボタン」をつけます。 cookieを使用して「店舗名」と「ファイル名(場所)」を記憶して日々の送信は「送信ボタン」を押すだけにしたいんです。 ファイル名・場所は変わることがほとんど無い(初期設定・PC変更など以外は使用しない)です。送るファイルはエクセルファイルのみです。受け取る方はOEです(関係ない?)。 こんな機能を持ったCGIは無いでしょうか?または、あるCGIをベースに改造することで可能とかでもOKです。 …ちょっと疑問に思ったのですが、sendmailではファイルの送信って出来ないのでしょうか? もし無理な場合、上記のことをしたい時にはどのようにしたらいいでしょうか? 何か方法がありましたら教えてください。 お願いします。

    • ベストアンサー
    • CGI
  • CGIを使わないフォームメール

    CGI使用不可のWebサーバーにフォームメールを作成しました。HTMLで <FORM ACTION="mailto:送信先メールアドレス" METHOD="POST"> としたものです。 これを使うと 1.送信ボタンを押したら、「このフォームを送信すると、電子メールアドレスが受信者に公開され、フォームのデータが暗号化されずに送信されます。この送信は続行することもできますが、取り消すこともできます。」という非常に物騒なメッセージがでる。 2.受信した時の件名が「Microsoft Internet Explorer から投稿されたフォーム」となり件名を指定できない。 3.受信データがPOSTDATA.ATTという添付ファイルになり、内容がエンコードされたバイトコードでデコードしないと内容が読めない。 CGIを使ってSendmailで送信させればいいじゃないの・・・と思うでしょうが、ISPがCGI使用不可なのです。HTMLフォームで先の1~3が改善される方法はないでしょうか。

  • メールフォームからスパム

    私が使うドメインから、スパムが大量に発信されている、至急調査した方が良い、という警告をフォームメールから受けました。 レンタルサーバーに問い合わせたところ、警告されているようなメールアドレスやスパム送信の履歴はないとのことでした。 フォームメールのCGIを踏み台にして、そのようなスパムをばらまいているのではないかという見解をレンタルサーバー側はしています。 しかし、フォームメールはスパム防止のための受信専門で設置した物です。そのような事が出来るとはとうてい思えないのですが。。。 警告には氏名、連絡先等の記載は書いていないので、連絡の鶏用がありません。こういう場合はいったいどうしたら良いのでしょうか。 本当にスパムを所有ドメインを使って発信しているのであれば、申し訳ないので改めたいと思って居ます。

  • Perl メールフォーム複数のアドレスに。

    メールを複数のアドレスに配置したいのですがPGをどう変更すれば よろしいでしょうか? 参考ソース #!/usr/bin/perl # フォームメール #jcode.plの場所を設定 require "./jcode.pl"; # sendmailの場所を設定 $sendmail = '/usr/lib/sendmail'; # サンプルのタイトル $mail_title = "メール送信サンプル"; # ページの背景色 $bgcolor = "#FFFFFF"; # ページの文字色 $text = "#000000"; # 戻り先のURL $back_url = '***@aaa.co.jp'; # CGIプログラムの設置場所 $cgi_url = "./mail.cgi"; # 受信メールアドレス(送信先) $mailto = '***@aaa.jp';

    • ベストアンサー
    • Perl
  • メールフォームのプログラム設定について

    メールフォームの設定で困っています。ウィーバーで作ったフォームで訪問者が送信ボタンをクリックするとその内容が指定のメールアドレスに届くようにしたくてpostmailを入手しました。書籍に書かれている通りに編集しメールフォームのhtmlファイルのアクションに指定しました。確認作業をしてみると送信ボタンを押すとpostmail cgiのコード画面が表示されてしまいます。レンタルサーバーを使用していますが、そちらのサーバーの仕様を調べperlパス、sendmailパスを入力しています。パソコンはマックです。ネットでも色々検索してみたのですが初歩的すぎるのかそこまで詳しくは書かれていずこちらで質問させて頂きました。どなたかお教え頂けたらありがたいです。よろしくお願い致します。

    • 締切済み
    • CSS
  • フォームメール

    いたずらメールが、フォーム上より多く届く為に指定されたメールアドレスからの送信を拒否するcgiを探し、ようやく発見し使用しています。 使用スクリプト http://planet.cside5.com/csw/free/mailrd.html 今までは数件程度のメールアドレスからの送信だったのですが、今年に入り、更に多くのメールが届くようになりcgiファイルを開けて編集するという方法が間に合わなくなってきました。 いたちごっこになってきますが、随時追加しやすくする為に、別ファイルで禁止リストを作成したいのですが、スキル不足の為どうしていいのか…(涙) @errmail = ('nomail@xxx.com','xxx@nomail.com'); ↑この部分だと思うのですが、外部のファイルでcsvで管理する方法をご存じの方おられませんでしょうか? また、既に別ファイルで禁止リストを管理できるcgiをご存じでしたら紹介して頂ければ幸いです(*- -)(*_ _)ペコリ

    • ベストアンサー
    • CGI
  • メールフォームの設置について教えてください

    CGI初心者です。 「さくら」でサーバーを借りて メールフォームのCGIを設置しました。 フォームの画面から名前やメールアドレスを入力して送信をクリックすると .cgiのダウンロードダイアログが出るんです。 でもきちんとメールは送信されていて返信用のメールも送られてきます。 どうすればいいのでしょうか? ちなみに http://hp.vector.co.jp/authors/VA017405/ こちらでCGIをお借りしました。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • メールフォームで困っています

    はじめまして。 メールフォームについて困っています。CGIを使っているのですが、急にメールフォームが使えなくなってしまいました。具体的にはメールフォームで送信すると『送信しました。』となるのですが、届かない状況です。受信側のメールアドレスも違うパソコンの別のものに変えてみましたがダメでした。以前は問題なく使えていました。 レンタルサーバーを使っているので問い合わせてみましたが特に問題は見当たらないという回答でした。 『送信しました』と表示がでるので、サイト利用者は『送信したのに返事がない』という状態になってしまい困っています。 どなたか問題点に心あたりがあれば教えていただけないでしょうか? 宜しくお願い致します。