• ベストアンサー

メールフォームでif文を…

某メールフォームを改造中です。 返信メール部分を改造しているところですが、うまく出来ません。 まず、フォームに「名前/社名」と「担当者」を入力してもらいます。 もし、「担当者」が空白なら「名前/社名」様、とメールに出力。 もし、「担当者」があるなら「名前/社名」「担当者」様、とメールに出力させたいです。 普通にメール出力部分にif文を書くとそのまま出力されてしまいます。 その他の部分を見ると、STRでくくっている所はプログラム(?)を書いても出力されない様子。(あってます?) でも、やってみるとうまくいきません。 どうやったらこのようにできますか? 言語はperlです。よろしくお願いします。

  • CGI
  • 回答数3
  • ありがとう数3

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

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

メール出力部分がどうなっているのか分からないのですが、 メール出力する前に何らかの変数の処理を行っていると思います。 例えば、もしメール本文中で「$name 様」という書き方をしているのであれば、$nameの部分をメール出力する前に決めているはずです。 ですので、その$nameを決めている命令文の箇所を書き換えれば良いということになります。

master-3rd
質問者

お礼

返答ありがとうございます。 なんか、自分で色々とやってたらできちゃいました。 改造しようとしているフォームは入力用htmlとCGIに分かれているタイプですが、各項目は、$FORM{name}という形でCGIに渡されていました。 単純に、$FORM{name} $FORM{tantou}様とすると、担当名と、様の文字が表示できませんでした。 なので、適当なところに $tanto = $FORM{tantou}; $namae = $FORM{name}; と変数化して、「$namae $tanto 様」とすることでちゃんと全部表示しました。 しかし、まだまだ勉強が必要なようです。 かいとうありがとうございました。

その他の回答 (2)

  • elthy
  • ベストアンサー率24% (124/500)
回答No.3

これはif文すら要りませんね。 便宜上、担当者を$men、名前/社名を$compに置きますが、 この場合メールに出力する時の書式を 「$comp $men様」 と書いてしまえばよいのです。 担当者が空白ならばそこには何も入りませんから 左詰に名前/社名のみが記されることになります。

master-3rd
質問者

お礼

返答ありがとうございます。 解決してしまったのでなんですが… そうしたかったんです。でも、$FORM{name}方式だと、なぜか2個続けるとちゃんと表示されず… で、#1さんの回答にも書きましたが、何とか出来ました。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.2

ご質問内容や、どういった回答を求めておられるのかは、とってもわかるのですが、回答するのは非常に困難です。メール文にifとか書かれるのは、書いたまんまを標準出力に出力する命令がその前に書いてあるからです。 #1の方の回答のように、それらの前に変数に代入してしまうのがよいのですが、その具体的な方法も、あなたがどの程度Perlを理解していらっしゃるか不明なので、書きようがありません。全部書いてしまうのも、しんどいので…… 適当な解説本を買って、じっくり研究なさるのがよろしいかと思います。ごめんなさい。

master-3rd
質問者

お礼

返答ありがとうございます。 とりあえずできちゃったのでなんですが… まだまだ勉強は必要ですね。努力します。

関連するQ&A

  • メールフォームの改造

    メールフォームCGIを改造中です。 自分に戻ってくるメールの内容をHTMLで送れるようになっているのですが、その途中でIF文を使用したいんです。 chomp($FORMAT = <<'STR'); <HTML><HEAD></HEAD> <BODY> <TABLE border="0" width="80%" cellpadding="3"> ~~~ </TABLE></BODY></HTML> STR この中に入れたいのですが、うまく出来ません。 素人考えで、IF文を入れるところに「chomp($FORMAT = <<'STR');-ここにIF文-STR」で区切ればOKなのでは?と考えたのですが、うまくいかなかったです。 chomp($FORMAT = <<'STR'); で区切られているHTMLの中でIF文を使うにはどうしたら良いのですか? よろしくお願いします。

    • 締切済み
    • CGI
  • while文とif文

    #include <stdio.h> void main() { char str[2][6] = {"hello","lop"}; int i = 0; while(i < 2){ printf("%s\n", str[i++]); } } 上のプログラムの条件判定の部分にif文を つかうとhelloという文字列しか出力されず while文を使うとhelloとlop 二つ出力され ます。上の条件判定のif文にした時ととwhile 文にした時の違いはどこなのでしょうか?? どなたかご教授よろしくお願いしますm(_ _)m

  • PHPでメールフォームを作るのは一般的なのですか?

    サイトでメールフォームや掲示板を作りたいと思い、CGI(Perl)の本を買って読んでみたのですが、C言語を少しやっていた私としてはPerlの記述が少々身に合わないと思いました。 そこで、PHPでも同じようにメールフォームや掲示板というのは一般的に使われているのでしょうか?勉強する上でPerlでメールフォームや掲示板という参考書はたくさんあったのですが、私の通っている本屋ではPHPでそのような本がありませんでした。 いずれデータベースもやりたいと思い、またC言語っぽいPHPのほうが勉強しやすいと思い、PHPでメールフォームなどを作りたいのですが、Perlとの違いや注意点などありますか? またお勧めのPHPの書籍やサイトを教えてください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • if文がうまく書けない(T.T)

    某CGIを改造してます。 CGIにIDとPassを組み込もうとしているのですが、うまくできません。 いろいろな認証CGIを真似してやっているのですが… sub pass2{ open (FILE,"$passdata"); @file = <FILE>; close FILE; foreach (@file) { local($nm,$ps)= split(/,/,$_); if ($nm eq $in{'name'} && crypt($in{'password'},$ps) eq "$ps") { &admin; exit; } } &error("認証に失敗しました?"); } この状態だと動くことは動くのですが、ちょっと面倒なので逆転させたいんです。 そこで以下のように作り変えてみました。 if ($nm ne $in{'name'}) { &error("名前が違います"); exit; } if ($nm eq $in{'name'} && crypt($in{'password'},$ps) ne "$ps") { &error("パスワードが違います。"); exit; } } &admin } こうすると、なぜか正しい名前を入れても「名前が違います」のメッセージが出ます。 いったいどこが間違っているのですか? 言語はperlです。 お願いします。

    • ベストアンサー
    • CGI
  • メールフォームが文字化けします、、、、

    メールフォームが文字化けします、、、。 「申します」→「垂オます」 とかなってしまいます。 また、「(1)」とかは「?」になってしまいます。 いろいろ調べてみたんですがこの辺かなぁとは思います。 ちなみにプログラミングなどド素人です。 ____________________________ if(get_magic_quotes_gpc()){$str = stripslashes($str);} //¥除去 return $str; } ____________________________ アドバイスお願い出来ましたら幸いです。><;

    • ベストアンサー
    • PHP
  • フォーム自動返信メールの空白をなくしたい

    無料テンプレートで問い合わせフォームを作ったのですが、自動返信で届くメールに空白ができて困っています。 自動返信メールの記述で下記のように改行すると、選択されていないチェックボックスの内容の行がそのまま空白になります。 改行しないで試してみたのですが、チェックボックスの内容1チェックボックスの内容2…と横に続いて表示されました。 選択されていない行は空白をなくして縦に詰めて表示したいのですが、どうすればいいでしょうか? 詳しい方教えていただけると助かります。 宜しくお願い致します。 【自動返信メールの記述】 <!-- TMPL_IF NAME=cbx-1 -->チェックボックスの内容1<!-- /TMPL_IF --> <!-- TMPL_IF NAME=cbx-2-->チェックボックスの内容2<!-- /TMPL_IF --> <!-- TMPL_IF NAME=cbx-3 -->チェックボックスの内容3<!-- /TMPL_IF --> <!-- TMPL_IF NAME=cbx-3 -->チェックボックスの内容4<!-- /TMPL_IF --> (例)フォームで内容1と内容4を選択するとこのようにメールが届きます。 チェックボックスの内容1 チェックボックスの内容4 (理想) チェックボックスの内容1 チェックボックスの内容4

    • ベストアンサー
    • CGI
  • フォームメールつくりましたけど、、。>_<

    下記のページで、フォームメールダウンロード つくったのですが、 [public_html] └[cgi-bin] ├[tmp] ├formmail.cgi ├jcode.pl └perl-lib.pl あげてフォームを入れて送ったのですが、 エラーになります。Internal Server Errorじゃなくて 「E-Mailを記入してください」下にもどるボタンが でます。ってことはパーミッションはあってるとおもうのですが 空白全部記入していて、メールもちゃんとしたアドレス 入れたのにエラーがでる原因は何が考えられますか? ダウンロードしたのは下記です。 http://www.tryhp.net/formmail.htm

    • ベストアンサー
    • CGI
  • こんなフォームメールありませんか?

    送信される毎に、番号(整理番号のようなもの)が付与されるフォームメールを探しています。 自動返信機能もついていて、メールを送信した人も、その番号を確認できるようなものが理想なのですが・・・ 使用しているサーバは、perl5.00503、あるいはPHP3、PHP4に対応しているようです。 ご存じの方がいたら教えてください!

    • ベストアンサー
    • CGI
  • ホームページのメールフォームの作成について

    メールフォームをホームページで作成する方法なのですが・・・ webサーバは、レンタルサーバを利用しています。 そこでは、CGIからのsendmail機能が使えるとの事でした。 また、Perl言語も使えるとの事です。 この要件があれば、メールフォームをホームページに作成することは可能でしょうか?

    • ベストアンサー
    • CGI
  • メールの文が消える?

    運送会社で自社ホームページの問い合わせフォームにお問い合わせをくださったお客様へ お見積りの返信メールを担当しています。 たまに 返信メールを入れたお客様から 『何も文面が書かれていないメールが届きました。 誤送信かと思いますので もう一度送ってください』と Re:で返信がされてきます。 そんなとき ほとんどの場合、私が送ったメールが添付されて送られてきますので そちらを見ると 送信したとおりの文面がちゃんとついています。 こちらからはGmailで送っています。 再送信するメールはWindowslivemailで送っていて、大抵の場合はその後連絡はこなくなるので 見れているようなのですが、先日のお客様は再送信したメールも『文が見えない』と返信がきたので 文に色をつけていた部分等をすべて消したうえで 再々送したのですが やはり見れないと返信がきました。 このような状況になってしまうのは 当社のGmail側または相手側のメールソフトの問題でしょうか? それとも他に何か原因があるのでしょうか? 詳しい人も近くにいないため 質問させていただきました。

専門家に質問してみよう