Top > MyPage
 

簡易メールフォーム マニュアル

設定の大まかな流れ

YAML

  conf/mailform.yml

の内容を編集。

テンプレートの作成

      conf/mailform.yml

の内容にしたがって、ファイル名を決め、

  1. フォームの画面
  2. 確認画面が必要な場合は確認画面
  3. メール送信後の画面

を作成する。

cgiの最初の1行を確認

サーバーのperlの場所を確認し、その場所と

    #!/usr/bin/perl

と一致しているかどうかを確認し、違う場合は編集する。

ファイルの転送

    mailform/conf
            /lib
            /template
            /i18n-emoji
            index.cgi

を全て、設置場所に転送する。

cgiのファイル属性を変更

アパッチのユーザーが実行できるように、index.cgiの属性を変える。

test

mailform.ymlのtoを自分のものに変えて、テストをする。OKなら、実際のものに戻す。

設定詳細

YAML

YAMLの形式

YAMLの形式はYAMLのホームページに詳細があるが、注意点を記す。

  1. 字下げにはTABは使わない。
  2. 字下げは通常半角スペース2個を利用する。
  3. 項目名(ハッシュの場合)の後ろには : を付け、その後に半角スペースを入れる。
  4. 配列の場合は - を付けて、その後に半角スペースを入れる。

mailform.yml

サンプル
mail:
  to:
    - chikkun@chikkun.com
    - sakai@chikkun.com
  smtp: localhost
  from: chikkun@chikkun.com
template:
  var_prefix: dum_
  error_sufix: _error
  form_file: mailform.tpl
  confirm_file: mailconfirm.tpl
  next_file: thanks.tpl
  mail_file: mailf.tpl
system:
  charsets: EUC-JP
  confirm: 1
  form_name: mailform
  error_header: 以下の項目の内容をご確認下さい。
ファイル名、文字コード
  1. ファイル名は mailform.yml に固定。
  2. 文字コードはテンプレートなどと合わせること。
ハッシュのキーの意味
  1. mail: 必須 。しかし、実際の値は入れず、以下のハッシュ値やその下の配列値を入れる。
    • to:

      必須。次のように、メールアドレスの配列を入れる。

        - chikkun@chikkun.com
        - sakai@chikkun.com
      
    • smtp: localhost

      必須。SMTPのアドレスを入れる。

    • from: chikkun@chikkun.com

      オプション。これが入っている場合は、メールのヘッダーのfromにこれが挿入される。もし、これが設定されていない場合はフォームのテンプレートの中のe_mailの値を利用する。どちらも設定されていない場合はエラーになる。

  2. template:

    必須。実際の値は以下のハッシュに設定する。

    • var_prefix: dum_

      必須。現在、ハッシュのキーのぶつかりを避けるために利用しているが、今後利用が広がる可能性がある。

    • error_sufix: _error

      必須。現在、未使用。今後利用。

    • form_file: mailform.tpl

      必須。最初の画面のテンプレート名。

    • confirm_file: mailconfirm.tpl

      オプション(条件付き必須)。確認画面のテンプレート名。もし、下記にあるconfirmが1に設定されている場合で、この値がない場合はエラーが発生する

    • next_file: thanks.tpl

      必須。メール送信後の画面のテンプレート名。

    • mail_file: mailf.tpl

      必須。メールの中身のテンプレート名。

  3. system:

    必須。実際の値は以下のハッシュに設定する。

    • charsets: EUC-JP

      必須。テンプレートの文字コード

    • confirm: 1

      必須。確認画面を入れるかどうかのフラグ。これを入れた場合には、上記のconfirm_fileが必須となる。

    • form_name: mailform

      必須。form_file内のフォームの名前。

    • error_header:以下の項目の内容をご確認下さい。

      オプション。指定しないと、デフォルトで「以下の項目の内容をご確認下さい。」が設定される。

validation_hash.yml

サンプル
group order: ['subject','name', 'e_mail','honbun']
subject:
    required: 1
    required_error: お問い合わせ件名を入力してください。
name:
    required: 1
    required_error: お名前を入力してください。
    min_len: 3
    min_len_error: 入力された文字数が少なすぎます。
    max_len: 30
    max_len_error: 30文字以内でお願いします。
e_mail:
    required: 1
    required_error: メールアドレスを入力してください。
honbun:
    required: 1
    required_error: お問い合わせの内容を入力してください。
ファイル名、文字コード
  1. ファイル名は validation_hash.yml に固定。
  2. 文字コードはテンプレートなどと合わせること。
ハッシュのキーの意味

フォームの入力値のバリデートが必要でない場合には、空ファイルを用意しておく。必要な場合は、以下のようなルールに基づき書き込む。

  1. group order

    チェックする順番を指定する。上記の例の配列にあるのは、フォームのメールの変数名を指定する。

      <input type="text" size=30 name="subject">
                                       ^^^^^^^
      <input type="text" size=20 name="name">
                                       ^^^^
    

    のような、nameで指定した値を入れることになる。

  2. subject:など

    上記の後は、必要なバリデートを書いていく。

    • required

      必須である場合には、1を指定する。

    • required_error

      requiredで1を指定した場合の、エラーメッセージを書き込む。ない場合はデフォルトの英語が表示される。

    • max_len: min_len:

      それぞれ、文字の最大値(半角ベース)、最小値(半角ベース)を指定する。ない場合はデフォルトの英語が表示される。

    • min_len_error: max_len_error:

      文字の最大値や最小値を設定した場合の、エラーメッセージを書き込む。ない場合はデフォルトの英語が表示される。

    [<li></li> is illegal in <li>]

テンプレート

ここでは、テンプレート内を作成する際の注意点を記す。

フォーム用のテンプレート
必須
  1. status

    <input type="hidden" name="status" value="[% status %]">
    

    フォームタグ内に上記の1行は必須で、プログラムの内部で利用している。

  2. js_val

        [% js_val %]
    </html>
    

    HTMLの最後に書き込む。ただし、Javascriptを使わない場合は必須ではない。

オプション
charsets
<meta http-equiv="Content-Type" content="text/html; charset=[%charsets%]">

上記のように書いておくと、自動で設定してくれる。

<meta http-equiv="Content-Type" content="text/html; charset=EUC_JP">

のように書いても大丈夫。

form_name, script_name
<form name="[% form_name %]" action="[% script_name %]" method="POST">

上記のように書いておくと、自動で設定してくれる。もちろん、mailform.ymlのform_nameと同じならば、そして、cgiのファイル名であるならば、

<form name="mailform" action="index.cgi" method="POST">

のように書いても大丈夫。

error_header
<span style='color:red'>[% error_header %]</span>

mailform.ymlのerror_headerが指定されているとその内容が、ない場合はデフォルトの「以下の項目の内容をご確認下さい。」がその場所に表示される。

ただし、上記のspanは必ずしも必須ではない。

subject_errorなど
<span class="error">[% subject_error %]</span>

は、バリデートに引っかかった場合のエラーメッセージを表示する場所に書き込む。このsubjectという名前は、実際のフォームの変数名を書き込む。

<input type="text" size=30 name="subject">
                                 ^^^^^^^
<input type="text" size=20 name="name">
                                 ^^^^

のsubjectを意味し、_errorは固定なので、注意すること。

ただし、上記のspanは必ずしも必須ではない。

確認画面用ののテンプレート

mailform.ymlでconfirmが1に設定されている場合は、このファイルを用意する必要がある。形式等は、上記のフォーム用のルールと同じ。

通常は、

<input type="text" size=30 name="subject">

とあったところを

[%subject%]<input type = "hidden" name = "subject" value = "[%subject%]">

などとすることになる。当然、メールフォームで使った変数と一致させる必要がある。つまり、inputでnameをsubjectとしたならば、[%subject%]で参照できる。

メール送信後のテンプレート

変数を使う必要がないならば、HTMLの内容をそのまま使えばよい。もし、変数を使いたい場合には、その他のテンプレートと同様、[%subject%]という形式で書き込んでおくと良い。もちろん、なんらかの方法でそれらの変数が定義されている必要がある。例えば、確認用のファイルに

<input type = "hidden" name = "link" value = "http://www.chikkun.com">

などと書いておけば、[%link%]という形で利用できる。

TODO

リロード禁止

リロードをしても、メールを送られないようにする。

戻るボタンで再送させない

一度送信した後に戻るボタンで戻り、再度送信ボタンを押しても、メールを送られないようにする。

確認画面のhiddenの自動作成

確認画面のhiddenを書くのは面倒なので、これを一気に作る方法を考案する。

エラーメッセージタグの自動作成

可能なら、エラーメッセージタグの自動作成を考案する。

Javascriptのメッセージ

現在、直接「項目の内容を修正してください」というものを書き込んでいるので、文字コードの問題が変わると、EUC_JPじゃないと文字化けを起こしてしまう。これをなんとかする。

現状では、EUC_JP以外の場合は、lib/CGI/Ex/validate.jsの文字コードを変えることによって、対応するしかない。