Web-UP CGIを駆使してWebサイトの運営効果を思いっきり上げる!

ホーム > CGI配布コーナー > Hi-Mail お問い合わせ


Hi-Mail


・Hi-Mail とは?
・Hi-Mail の特徴
・Hi-Mail 設置法
・Hi-Mail の便利な活用法



Hi-Mail とは?


Hi-Mail は専任のメール担当者を確保できないSOHOや中小企業のメール応対業務を独自の条件別処理により高度に自動化し、通し番号自動発行機能やCSVデータズレ防止機能、CSVファイル自動ローテーション機能などにより、メールフォームCGIの枠を超えたメール応対業務最適化システムです。

memory.cgi(外部オプションファイル)を活用することにより、次回注文時に再び名前やメールアドレスを入力していただくといった手間を省くことが出来るので送信処理が一発で完了します!
他にも、お知り合いにご紹介していただく機能なども後から自由に追加することが出来ます!

(サンプル画面:新しいウィンドウが開きます)

Hi-Mail はシェアウェア(3,150円)のCGIメールフォームスクリプトです。
(Perl:バージョン5.004以上、Sendmail必須)

[ 更新履歴 ]
・2002/12/13 v1.03 公開
・2002/12/14 v1.04 通し番号に関する細かいバグを修正(^-^;
・2002/12/16 v1.05 送信項目のJisコード変換処理に関するバグを修正(^^; (かめさん、ありがとうございますm(__)m)
・2002/12/16 v1.06 フォーム入力データのエラー項目をまとめて表示するよう改良、一部環境での文字化けを解消
・2002/12/17 v1.07 件名にもフォームからの入力データを差し込み可能に 一部ロジックを見直し
・2002/12/19 v1.08 通し番号が存在しなかったときにCSVファイルにnull値を挿入(CSVフィールドズレ防止)
・2002/12/25 v1.09 プレビュー実行時CSVファイルに send_mes_go = 1 の値(CSVファイル3列目)が残留する症状を解消
・2002/12/26 v1.10 さらに一部ロジック見直し
・2002/12/28 v1.11 CSVファイルデータ量指定ローテーション時のロジックを大幅に効率改善
・2003/01/13 v1.12 管理者と送信者それぞれにメール送信するかどうかを任意に設定できるよう改良
・2003/02/01 v1.13 HTMLの表示文字コードをEUCとShift-JISから選択可能に
・2003/02/03 v1.14 7桁郵便番号(ハイフン付き)の書式チェックを追加
・2003/02/06 v1.15 7桁郵便番号(ハイフン付き)の書式チェックを有効にすると入力必須となってしまう症状を解消
・2003/02/13 v1.16 メールヘッダの記述を改良
・2003/03/04 v1.17 カタカナ・加入電話番号・携帯電話番号・その他の電話番号・日付の書式チェックを追加
・2003/03/04 v1.18 CSVファイルへの記録を任意で選択可能に
・2003/03/26 v1.19 ホスト名取得部分のロジックを改良、一部タイムゾーンが適用されていなかったバグを修正
・2003/05/16 v1.20 日付の存在確認ロジックを修正
・2003/06/05 v2.00 商用利用シェアウェア化に伴いバージョンを2.00に変更
CSVファイルに記載しない項目を設定した際に空値セルが挿入される不具合を修正
自動改行項目を複数設定した際に正常動作しない不具合を修正
禁止ワード設定を追加
指定条件合致時に指定項目のみCSV保存設定を追加
一部ロジック改善により動作安定度を向上
・2003/06/15 v2.01 メールとCSVファイルに記載しない項目が未設定のときにデータが重複するバグを修正
・2003/08/27 v2.02 プレビュー画面で表示しない項目設定を追加
プレビュー画面・送信後画面・エラー画面にフォームからの入力項目を差し込み可能に
・2003/09/03 v2.03 メールとCSVファイルに記載しない項目を複数設定したときのバグを修正
・2003/09/13 v2.04 メールとCSVファイルに記載しない項目をそれぞれ個別に設定できるよう改良
タグ等の特殊文字をプレビュー画面のみに反映させるように改良
サーバー負荷を軽減
・2003/11/13 v2.05 @other_telの判定条件を修正(hi-mail.cgi)
・2004/02/24 v3.00 外部オプションファイル対応
入力データ連結機能を追加
チェックボックス選択数制御機能を追加
・2004/05/21 v3.01 チェックボックス連結時の不具合を修正
・2004/06/01 v3.02 個別項目差し込みの不具合を修正
・2004/06/18 v3.03 初回設置時・不正利用検出時のメール送信ロジックを削除




Hi-Mail の特徴


Hi-mail は特徴がありすぎて全部書くとスゴイ量になると思いますが、やっぱり書いておきます(^^;

  • New! 外部オプションファイルによる機能追加に対応しました。
  • New! 任意の入力データを任意の記号で連結し、さらに連結後のデータに任意の名称を付けることができます。
  • New! チェックボックスの選択数を、「○個未満」・「○個以下」・「○個ちょうど」・「○個以上」・「○個超」として制限することができます。
  • 送信者に自動返信をします(これは当然ですね・・・(^^; )
  • 管理者と送信者それぞれにメール送信するかどうかを別々に設定できます。
  • HTMLの表示文字コードをEUCとShift-JISから選択できます。
  • データ入力後に確認画面を表示するかしないかを設定できます。
  • メールフォームのname値には英語・日本語の両方が使えます(例:<input type=text name="趣味">など)。
  • 入力必須項目をいくつでも設定できます。
  • 入力内容が同一でないとエラーとする項目をいくつでも設定できます。
  • 半角数字のみ入力許可とする項目、半角英数字のみ入力許可とする項目をいくつでも設定できます。
  • 7桁郵便番号(ハイフン付き)の書式チェックをする項目をいくつでも設定できます。
  • カタカナと空白のみを入力許可とする項目をいくつでも設定できます。
  • 加入電話番号(ハイフン付き)の書式チェックをする項目をいくつでも設定できます。
  • 携帯電話番号(ハイフン付き)の書式チェックをする項目をいくつでも設定できます。
  • その他の電話番号(ハイフン付き)の書式チェックをする項目をいくつでも設定できます。
  • 日付の書式チェックをする項目をいくつでも設定できます。
  • 日付の書式チェックをする項目に存在しない日付が入力された場合エラーとなります(うるう年にも対応)。
  • 入力禁止とする項目をいくつでも設定できますので、フリーメールアドレスからの送信などを事前に防止できます。
  • メールアドレス・ホームページアドレスを正規表現を使って厳密に書式チェックします。これにより、せっかくメールを送ってくれた送信者の方が運悪くメールアドレスを間違って記入してしまい連絡が取れなくなるというトラブルを大幅に減らすことができます。
  • 入力文字数を制限する項目をいくつでも設定できます。
  • 送信者名に任意の敬称(例:様など)を付けることができます。これにより、管理者が送信者に返信するときに宛先が自動的に「○○様」となります。
  • 送信者と管理者それぞれに別々の件名・文面のメールを送信することができます。
  • 管理者にメール送信するときに「CC」や「BCC」で複数のアドレスに同時に送信することができます。
  • 特定の条件(例:「ご用件」が「予約」だった場合など)を設定しその条件を満たしたときに、送信者と管理者それぞれに通常とは別の件名・文面のメールを送信することができます。
  • メールフォ-ムから送信されたときに自動で「通し番号」を発行するすることができます。
  • 「通し番号」には任意の名称(例:ご予約番号やお申し込みNoなど)を付けることができます。
  • 「通し番号」には任意の頭文字(例:問い合わせ番号なら「Q」など)を付けることができます。
  • 「通し番号」は任意の桁数に設定できます。
  • 特定の条件を設定しその条件を満たしたときだけ、「通し番号」を発行するように設定できます。
  • 件名にも「通し番号」を差し込みできます。これにより、返信をするとき簡単に「Re:お問い合わせ番号Q102105へのご返答です」などとすることができるので、毎回件名を記入する必要がありません 返信のメールをもらった送信者側もわかりやすくなります。
  • 件名にもフォームからの入力データを個別に差し込めます。
  • メールの文面内には通常の送信内容の他に、メールフォ-ムから入力されたデータを自由に差し込むことができるので、ありきたりの文面ではなく日常会話に近い自然な文章を作成して自動返信することができます もちろん、送信者宛・管理者宛に別々に作成することができます。
  • 連結された通常の送信内容をメール文面に全く挿入しないようにすることもできます。
  • チェックボックスなどの複数選択可能な項目の入力データをひとつにまとめるように設定できます。これによりCSVファイル内でフィールド(列)がずれてしまうことがありません。
  • チェックボックスやラジオボタン、セレクトメニューなどは何も選択されないとname値のデータがCGIに渡されずに、結果としてCSVファイル内のフィールド(列)がずれてしまいますが、同一name値のhiddenタイプ項目を設定することにより、それを防ぎます。
  • メールとCSVファイルに記載しない項目をいくつでも設定できます。
  • プレビュー画面に表示しない項目をいくつでも設定できます。
  • プレビュー画面・送信後画面・エラー画面にフォームからの入力項目を差し込むことができます。
  • 送信されたデータをCSVファイルに保存します。
  • CSVファイルには送信されたデータの他、送信者の利用ホスト・利用ブラウザ・送信日時の情報が自動的に記録されます。
  • CSVファイルの記録ログを蓄積件数やデータ量を指定して自動ローテーションを行うのでサーバー容量の心配がありません。もちろんローテーションをしないようにも設定できます。
  • CSVファイルの破損を防ぐファイルロック機構。
  • 任意の条件に合致した場合のみ、任意の項目を通常のCSVファイルとは別のファイルに保存することが出来ます。これにより後から蓄積したデータを振り分けするといった業務処理を自動化します。
  • 半角カタカナが入力された場合でも自動的に全角カタカナに変換するので文字化けの心配がありません。
  • 長文の入力が予想されるメールフォ-ム項目(例:ご感想など)を、任意の文字数で自動改行するように設定できるので、メールが読みやすくなります。
  • メールの件名をBase64エンコードして文字化けを防ぎます。
  • メールフォーム画面・送信後画面・エラー画面・プレビュー画面のHTMLを自由に編集できます もちろん外部スタイルシートの取り込みもOK!。
  • メール送信後に任意のページへ任意の秒数で自動的にジャンプさせる・させないを設定できます。
  • 任意の時間内で、同一のメールアドレス・ホスト・ブラウザを利用している人からの二重送信を防ぎます。これにより二重注文等のトラブルを未然に防ぎます。
  • 指定したホストからのアクセスを拒否することができます。
  • 指定したサイト内からの入力でないとエラーとすることができます。
  • 送信者の利用ホスト・利用ブラウザ・送信時刻を、管理者と送信者それぞれのメール文面に差し込みする・しないを設定できます。

▲このページの上に戻る▲



Hi-Mail をゲット!


Hi-Mail は、必ずスクリプト利用規約に同意いただいた上で、設置・ご利用下さい。
Hi-Mail をダウンロードされた時点で無条件にスクリプト利用規約に同意したものとさせていただきますので、ご了承下さい。

スクリプト利用規約に同意していだけますか?
はい、スクリプト利用規約に同意します
(試用版は初回設置後14日間までご試用いただけます)

▲このページの上に戻る▲



Hi-Mail 設置法


CGIの設置が初めてという方はCGI初心者のためのCGI設置講座もご活用下さい。
このページの設置法を読んでみて、どうしてもご自分では設置できないという方は有償サービスのCGI設置代行をご検討下さい。

Hi-Mail をダウンロードしたら、解凍ソフトで解凍します。
ファイルを解凍すると「hi-mail」フォルダ内に以下のファイルが展開されます。

hi-mail.cgi
conf.cgi
jcode.pl
mimew.pl
dataフォルダ
lockフォルダ
mime_pls202フォルダ

lockフォルダの中にmail.lokというファイルが入っていますが、これはファイルロック用のファイルですのでこのままアップロードして下さい。
dataフォルダの中にもいくつかのファイルが入っていますがこれらも後ほどそのまま全てアップロードします。
jcode.pl歌代 和正さんのPerlライブラリで再配布が許可されています。歌代さんに心から感謝いたします!
mimew.pl生田 昇さんのPerlライブラリで再配布が許可されています。生田さんにも心から感謝いたします〜!
mime_pls202フォルダの中にはmimew.plのドキュメント一覧が含まれています。アップロードの必要はありません。

まずエディタhi-mail.cgi を開き、1行目のPerlのパスをプロバイダ指定のものに変更します。
hi-mail.cgiconf.cgi は文字コードをEUCで記述していますのでWindows標準のメモ帳などでは編集できません)
hi-mail.cgi の変更点はこれだけで終りです。主な設定は設定用ファイルのconf.cgi で行います。
次にエディタでconf.cgi を開き、下記の設定を行います。
Hi-Mail は自由度が高い分、設定項目も多いのでちょっと大変かもしれませんが頑張ってみて下さい(^^;

#------------#
   基本設定
#------------#


# Hi-Mailのスクリプト名称(とくに変更する必要はありません)
$sc_name = 'hi-mail.cgi';


# ロックディレクトリ名(とくに変更する必要はありません)
$lock_dir = './lock/';


# ロックファイル名(とくに変更する必要はありません)
$lock_file = 'mail.lok';


# 設置サイトのトップページのURL(ここに記入したサイト以外からの不正投稿を禁止します)
$baseurl = 'http://あなたのホームページアドレス/';
※他サイトからの不正利用を防止したい場合に設定して下さい


# sendmail部分のパスを記入
$sendmail = '/usr/sbin/sendmail';
※プロバイダ指定のsendmail のパスを記入して下さい


# 設置サイトの名称(送信者に送られるメールの送信者名になります)
$admin_name = 'Web-UP';


# 送信を拒否するホスト名('ホスト名','ホスト名'…の形で)
# 記入例 @deny_host = ('waruihito.ne.jp','ikenaihito.ne.jp'); など
@deny_host = ('');


# 管理者にメール送信をするなら1、しないなら0
$send_admin = 1;


# 送信者にメール送信をするなら1、しないなら0
$send_costm = 1;


# 管理者のメールアドレスを記入します
# 複数ある場合は'aaa@bbb.cc; ddd@eee.ff'のように「;」で区切ります
$to = 'info@web-up.cside.biz';


# 管理者宛てメール送信時にCCで同時に送りたいアドレスがある場合に記入します
# 複数ある場合は'aaa@bbb.cc; ddd@eee.ff'のように「;」で区切ります
$cc = '';


# 管理者宛てメール送信時にBCCで同時に送りたいアドレスがある場合に記入します
# 複数ある場合は'aaa@bbb.cc; ddd@eee.ff'のように「;」で区切ります
$bcc = '';


# 送信前にプレビュー画面を表示するなら1、しないなら0
$preview = '1';




#------------------------#
     件名に関する設定
#------------------------#


# 送信者宛てメール件名(1)
# 件名に ###番号### を含めると通し番号を挿入できます その場合下にある通し番号の設定も行って下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
$sub_costm1 = '';
記入例:$sub_costm1 = '###番号### ご予約有難う御座いました';


# 送信者宛てメール件名(2)
# 特定の条件が揃ったときの送信者宛てのメール件名
# 件名に ###番号### を含めると通し番号を挿入できます その場合下にある通し番号の設定も行って下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# 下の@sub_costm_condを指定しないと無効となります
$sub_costm2 = '';
記入例:$sub_costm2 = 'お問い合わせありがとうございました';


# 送信者宛てメール件名を変更する条件
# ('name値','value値') の形で記述します 1つの条件まで指定できます
# この設定をした場合、このファイルの下の方にある送信者宛のメール文面 $send_mes_costm2 も設定できます
@sub_costm_cond = ('','');
記入例:@sub_costm_cond = ('ご用件','お問い合わせ');


# 管理者宛てメール件名(1)
# 件名に ###番号### を含めると通し番号を挿入できます その場合下にある通し番号の設定も行って下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
$sub_admin1 = '';
記入例:$sub_admin1 = '###番号### お申し込みありがとうございました';


# 管理者宛てメール件名(2)
# 特定の条件が揃ったときの管理者宛てのメール件名
# 件名に ###番号### を含めると通し番号を挿入できます その場合下にある通し番号の設定も行って下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# 下の@sub_admin_condを指定しないと無効となります
$sub_admin2 = '';


# 管理者宛てメール件名を変更する条件
# ('name値','value値') の形で記述します 1つの条件まで指定できます
# この設定をした場合、このファイルの下の方にある管理者宛のメール文面 $send_mes_admin2 も設定できます
@sub_admin_cond = ('','');




#--------------------------#
    送信データに関する設定
#--------------------------#

# メール送信時に送信項目の行頭に付ける記号(CSVファイルの分割キーと同じものには出来ません)
# メール上で■項目名 などのようになります
$head ='■';


# メール送信時にname値とvalue値の間に入れる記号(CSVファイルの分割キーと同じものには出来ません)
# メール上で■項目名: などのようになります
$space =':';


# 送信者名として認識する項目('name値'の形で)
$namae = '';
記入例:$namae = 'お名前';


# 送信者名の後ろに付ける敬称
# メール上で■お名前: ○○ 様などのようになります
$keisyou = ' 様';


# 入力必須とする項目('name値','name値'…の形で)
@hisssu = ('','','');
記入例:@hisssu = ('お名前','メール','メール(再入力)');


# 送信者のメールアドレスとする項目(1項目のみ)
$mail_to = ('');
記入例:$mail_to = 'メール';


# メールアドレスとして書式チェックする項目('name値','name値'…の形で)
@mail_chek = ('','');
記入例:@mail_chek = ('メール','メール(再入力)');


# 同一の入力内容でないとエラーとする項目('name値'=>'name値'の形で 複数ある場合は ''=>'',''=>''…のように区切る)
%sames = (''=>'');
記入例:%sames = ('メール'=>'メール(再入力)');


# メールとCSVファイルに記載しない項目('name値','name値'…の形で)
@no_add = ('');
記入例:@no_add = ('メール(再入力)');


# プレビュー画面で表示しない項目('name値','name値'…の形で)
@no_pre = ('');
記入例:@no_pre = ('メール(再入力)');


# URLとして書式チェックする項目('name値','name値'…の形で)
@url_chek = ('');
記入例:@url_chek = ('ホームページアドレス');


# 半角数字のみ入力許可とする項目('name値','name値'…の形で)
@hankakusuuji = ('');
記入例:@hankakusuuji = ('郵便番号');


# 半角英数字のみ入力許可とする項目('name値','name値'…の形で)
@hankakueisuu = ('');
記入例:@hankakueisuu = ('ニックネーム');


# 郵便番号として書式チェックする項目('name値','name値'…の形で)
# xxx-xxxx(数字3桁 ハイフン 数字4桁)という書式でないとエラーとしたい場合に設定します
@zip = ('');
@zip = ('郵便番号');


# 入力データ量に制限を設ける項目('name値'=>'半角文字数'の形で 複数ある場合は ''=>'',''=>''…のように区切る)
%data_limits = (''=>'');
記入例:%data_limits = ('コメント'=>'400');


# メール送信時に自動的に改行する項目とその文字数
#(文字数は半角換算、70程度を推奨'name値'=>'半角文字数'の形で 複数ある場合は ''=>'',''=>''…のように区切る))
%auto_wrap = (''=>'');
記入例:%auto_wrap = ('ご感想'=>'70');


# 禁止ワードを設ける項目('name値'=>'禁止ワード:禁止ワード'の形で 複数ある場合は ''=>'',''=>''…のように区切る)
%bad_word = (''=>'');
記入例:%bad_word = ('メール'=>'furee_no_mail.com');


# 禁止ワード分割キー(上の %bad_word で設定した禁止ワードを分割する文字)
$bad_key = ':';


# 複数選択可能な項目で同じname値で入力データを1つにまとめたい項目('name値','name値'…の形で)
# 選択された項目をまとめてCSVファイルの列(フィールド)がずれないようにします
# ここで設定した項目を入力必須にすることは出来ません
# [重要] この機能を使う場合は、送信者にデータを入力してもらうメールフォーム内において、@check_boxで設定した項目の
# <input type="checkbox" name="まとめたい項目" value="○○○"> の直下に、必ず同じname値のhiddenタイプ
# <input type="hidden" name="まとめたい項目" value=""> を記述して下さい hiddenタイプのvalue値は空白でけっこうです
# この一文によってなにも選択されなかった場合も未選択としてname値を保持します

# checkboxタイプ以外に、selectタイプでmultipleとして複数選択させる場合や
# radioタイプでなにも選択されなかった場合も未選択としてname値を保持したい場合も同様にして下さい
@check_box = ('','','');
記入例:@check_box = ('取りたい資格','連絡方法','所持資格','受験する資格');


# 上記の複数選択可能な項目のvalue値を連結するキー(CSVファイルの分割キーと同じものには出来ません)
$join_key = '';
記入例:$join_key = ' ・ ';
# 好きな食べ物: りんご ・ みかん ・ バナナ などのようになります


#-----------------------------------------#
      送信ボタン2度押し処理に関する設定
#-----------------------------------------#

# 送信ボタン2度押し検出用一時ファイル(とくに変更する必要はありません)
$temp_file = './data/temp.dat';


# 送信ボタン2度押しと判定しない秒数
# 同一送信者から複数回送信ボタンを押されたときにこの秒数以上経過していれば送信ボタン2度押しと判定しません
$wait = '10';


# 送信ボタンが2度押しされたときにエラー画面にするなら0、送信後画面にするなら1
# 送信ボタンが2度押しされても最初の1回目は通常に処理されますので送信後画面にしておいたほうが送信者の気分を害さなくてすむと思います
$dblsub_syori = '1';


# 送信ボタンが2度押しされたときのメッセージ
$dblsub_mes = '';
記入例:$dblsub_mes = '<br><div align=center style="color:red">(送信ボタンが2回押されたようですが、入力していただいた内容は既に送信されていますのでメールをご確認下さい)</div><br>';



#----------------------------#
     通し番号に関する設定
#----------------------------#


# 通し番号 設定するとメールとCSVファイルに記載されます(付ける=1 付けない=0)
$num_add = '1';


# 特定の条件が揃ったときだけ通し番号を発行する場合
# 例:name'問い合わせ内容'がvalue'申し込み'だったときだけ'申し込み番号'を発行するなど
# 'name値'=>'value値'の形で記述します 条件が複数ある場合は ''=>'',''=>''…のように区切る
# 無条件に通し番号を発行する場合は空白にして下さい
# @check_box = ('');で入力内容をまとめる項目は設定できません
%num_cond = (''=>'',''=>'');
記入例:%num_cond = ('ご用件'=>'予約',''=>'');


# 上の条件を複数設定したときにand条件とするなら1、or条件とするなら0
# and条件の場合は全ての条件を満たしたとき、or条件の場合はどれか一つでも条件を満たしたときに通し番号を発行します
$num_andor = '';


# 通し番号名称
$num_name = '';
記入例:$num_name = 'お問い合わせ番号';


# 通し番号桁数
$num_beams = '';
記入例:$num_beams = 5; #(5桁)


# 通し番号の先頭に付ける文字
$num_head = 'Q';
記入例:$num_head = 'Q';


# 通し番号格納ファイル(とくに変更する必要はありません)
$num_file = './data/no.dat';




#-------------------------------#
     CSVファイルに関する設定
#-------------------------------#


# 全送信項目格納CSVファイル
# セキュリティ上、データ漏洩が心配な場合は拡張子を .cgi とするかファイル名を変更して下さい
# ここでのファイル名を変更した場合は実際のファイル名も変更して下さい
# サーバー上に記録ログを残す必要が無い場合は 行頭に「#」を挿入し #$csv_file = './data/data.csv'; とすると
# CSVファイルに記録しなくなります
$csv_file = './data/data.csv';


# 指定項目格納CSVファイル
# 下の %spc_cond で指定した条件を満たしたときに @spec_val で指定した要素のみを抽出して記録します
# セキュリティ上、データ漏洩が心配な場合は拡張子を .cgi とするかファイル名を変更して下さい
# ここでのファイル名を変更した場合は実際のファイル名も変更して下さい
# サーバー上に記録ログを残す必要が無い場合は 行頭に「#」を挿入し #$spc_file = './data/spc.csv'; とすると
# CSVファイルに記録しなくなります
$spc_file = './data/spc.csv';


# 指定項目格納CSVファイルに記録する条件
# 'name値'=>'value値'の形で記述します 条件が複数ある場合は ''=>'',''=>''…のように区切る
# 無条件に指定項目格納CSVに記録する場合は空白にして下さい
%spc_cond = ('送信内容'=>'お問い合わせ');


# 上の条件を複数設定したときにand条件とするなら1、or条件とするなら0
# and条件の場合は全ての条件を満たしたとき、or条件の場合はどれか一つでも条件を満たしたときに通し番号を発行します
$spc_andor = 1;


# 指定項目格納CSVファイルに記録する項目('name値','name値'…の形で)
# ここで指定した項目の順番通りにCSVファイルに記録されますが、入力を必須にしないとデータがずれますのでご注意下さい
# ###送信日時###,###ホスト###,###ブラウザ###,###番号###とすると、該当する情報が記録されます
# 例) 送信日時・お名前・メールアドレスのみを記録するのであれば
# @spec_val = ('###送信日時###','お名前','メールアドレス'); となります
@spc_val = ('###送信日時###','お名前','メール');


# CSVファイルの分割キー(タブ区切りにするときは半角で \t と記入します)
$split_key = ",";


# CSVファイルログのローテーション('Aタイプ'=>'B数量')
# Aタイプ (0か空白=ローテーションなし、1=件数指定、2=データ量指定)
# B数量 (件数指定なら送信件数、データ量指定ならキロバイト 1メガバイトなら1024キロバイト)
# 数量を件数で指定した際には送信される内容によりますが1万件でおよそ1〜2メガバイト程度のデータ量となります
@rtn = (0,0);




#--------------------------------#
     メールの文面に関する設定
#--------------------------------#


# 送信者に送信するメールの文面(1)
# <<'EOF';の次の行からEOFの前の行の間で自由に編集して下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# ##send_data##の部分にはフォームから入力された内容が差し込まれます
# ###送信日時###,###ホスト###,###ブラウザ###,###番号###とすると、該当する情報が差し込まれます

$send_mes_costm1 = <<'EOF';
##お名前## 様

この度はお問い合わせを頂きまして誠にありがとうございます。
ご送信いただいた内容は下記の通りですのでご確認下さい。

###送信日時###
##send_data##


おり返しご連絡いたしますのでしばらくお待ち下さい。
※万一このメールに覚えがない場合はお手数ですが
info@web-up.cside.biz までご連絡下さい。


/// [ Web-UP ] ////////////////////
Net-BP
Add:札幌市東区東苗穂1条2丁目6番
Tel/Fax: 011-784-0937
URL:http://web-up.cside.biz/
Mail:info@web-up.cside.biz
//////////////////////////////////

EOF



# 送信者に送信するメールの文面(2)
# 特定の条件が揃ったときだけ送信者宛てのメールの文面を変更する場合
# この設定をした場合、このファイルの上の方にある @sub_costm_cond も設定する必要があります
# <<'EOF';の次の行からEOFの前の行の間で自由に編集して下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# ##send_data##の部分にはフォームから入力された内容が差し込まれます
# ###送信日時###,###ホスト###,###ブラウザ###,###番号###とすると、該当する情報が差し込まれます

$send_mes_costm2 = <<'EOF';
##お名前## クン!

ひやかしならやめてっ!
(≧ヘ≦ )プイッ

EOF



# 管理者に送信するメールの文面(1)
# <<'EOF';の次の行からEOFの前の行の間で自由に編集して下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# ##send_data##の部分にはフォームから入力された内容が差し込まれます
# ###送信日時###,###ホスト###,###ブラウザ###,###番号###とすると、該当する情報が差し込まれます

$send_mes_admin1 = <<'EOF';
##お名前## 様からお問い合わせがありました。

##send_data##

###送信日時###
###ホスト###
###ブラウザ###

EOF



# 管理者に送信するメールの文面(2)
# 特定の条件が揃ったときだけ送信者宛てのメールの文面を変更する場合
# この設定をした場合、このファイルの上の方にある @sub_admin_cond も設定する必要があります
# <<'EOF';の次の行からEOFの前の行の間で自由に編集して下さい
# ##フォームのname値##とするとフォームから入力された内容を個別に差し込みます
# ##send_data##の部分にはフォームから入力された内容が差し込まれます
# ###送信日時###,###ホスト###,###ブラウザ###,###番号###とすると、該当する情報が差し込まれます

$send_mes_admin2 = <<'EOF';
##お名前## 様からひやかしがありました。

##send_data##

###送信日時###
###ホスト###
###ブラウザ###

EOF




#------------------------#
    HTMLに関する設定
#------------------------#


# HTMLの表示文字コード(PCのみの使用なら0でOKです)
# EUC-JP ⇒ 0
# Shift-JIS ⇒ 1(i-modeなど)
$html_code = 1;


# bodyタグ
$body = '<body bgcolor="#FFFFFF" text="#000000" link="#000FF" vlink="#800080">';


# 外部スタイルシートを取り込む場合、パスとファイル名(hi-mail.cgiからの相対パスかhttp://からの絶対パス)
$style = '';
記入例:$style = './style.css';


# 送信後画面のタイトル
$sendout_title = '送信完了しました';


# 送信後に表示するHTML
# <<EOF;の次の行からEOFの前の行の間で自由に編集して下さい
# <a href="$baseurl">トップページに戻る</a> はトップページに戻るためのリンクになります

$sendout_body = <<EOF;
<div align=center>
(^o^)丿  <font size=+1><b>お問い合わせいただきましてありがとうございました</b></font>  (^o^)丿
<br><br>
<HR width=50%>
<a href="$baseurl">トップページに戻る</a>
<HR width=50%>
</div><br><br>

EOF


# 送信後HTML表示後、自動的にジャンプさせるならその秒数(0にするとジャンプしません)
$jump_sec = 5;


# 送信後HTML表示後、自動的にジャンプさせるならそのURL(トップページなど)
$jump_url = 'http://あなたのホームページアドレス/';


# 送信後HTML表示後、自動的にジャンプさせるならそのメッセージ
# $jump_sec の部分には上の $jump_url で指定した秒数が表示されます
$jmes = "<div align=center><font color=blue>$jump_sec秒後にトップページへジャンプします</font></div><br>";


# エラー画面のタイトル
$error_title = 'エラー';


# エラー時に表示するHTML
# <<EOF;の次の行からEOFの前の行の間で自由に編集して下さい
# ##error## 部分にはエラー内容が差し込まれます
# <a href="$baseurl">トップページに戻る</a> はトップページに戻るためのリンクになります
# <a href=mailto:"$to">$to</a> は管理者にメールを送信するためのリンクになります

$error_body = <<EOF;
<div align=center>
<font color=#cc0000>(゚∇゚|||)  <font size=+1><b>エラー</b></font>  (゚∇゚|||)</font>
<br><br>
<HR width=50%>
<font color=red>
##error##
</font>
<HR width=50%>
<br>
うまく送信できない場合は<a href=mailto:"$to">$to</a>よりご連絡下さい
<br><br>
<A href="JavaScript:history.back()">前のページに戻る</A>
<br><br>
<a href="$baseurl">トップページに戻る</a>
</div><br><br>

EOF


# プレビュー画面のタイトル
$pre_title = '送信内容確認';


# プレビュー時に表示するHTML
# <<EOF;の次の行からEOFの前の行の間で自由に編集して下さい
# ##send_data##の部分にはフォームから入力された内容が差し込まれます
# プレビュー時にはフォームからの個別項目の差し込みはできません
# <form action =$sc_name method=POST> と <input type=hidden name=send_mes_go value=1> は位置変更・削除しないで下さい

$pre_body = <<EOF;
<div align=center>
<form action =$sc_namemethod=POST>
<input type=hidden name=send_mes_go value=1>
<table bgcolor=#DDDDCC cellpadding=1>
<tr><td align=center colspan=2>
下記の内容で送信してもよろしいですか?
</td></tr>
##send_data##
<tr><td align=center colspan=2>
<input type=submit value='送信'>&nbsp;&nbsp;
<input type=button value='戻る' onClick='history.back();'>
</td></tr></table>
</form>
</div>

EOF


# プレビュー画面のテーブル左側セル色
$left_col = '#FFFFEE';


# プレビュー画面のテーブル左側セルの左右揃え(left,center,right から選択、空白だとエラーになります)
$left_align = 'center';


# プレビュー画面のテーブル左側セルの上下揃え(top,middle,bottom から選択、空白だとエラーになります)
$left_valign = 'middle';


# プレビュー画面のテーブル右側セル色
$right_col = '#FFFFFF';


# プレビュー画面のテーブル右側セルの左右揃え(left,center,right から選択、空白だとエラーになります)
$right_align = 'left';


# プレビュー画面のテーブル右側セルの上下揃え(top,middle,bottom から選択、空白だとエラーになります)
$right_valign = 'middle';


いや〜 お疲れ様でした(笑) あとはファイルをアップロードしてパーミッションを設定するだけです。 とりあえず一服して少し休んでくださいね(^^;



一服が終わったら全ファイルを hi-mail ディレクトリごと、FTPソフトでアスキーモードでアップロードします。
その後、下の通りパーミッションを設定します。
FTPソフトは定番のSotaさん作FFFTP(新しいウィンドウが開きます)が使いやすくてオススメです。

<ディレクトリ構成例>
(かっこ内はパーミッション値)

/public_html/-─┼----index.html
                │
                │
                ┼--/cgi-bin[755]/--/hi-mail[755]/---hi-mail.cgi[755]
                                                        conf.cgi[644]
                                                        jcode.pl[644]
                                                        mimew.pl[644]

                                                           /data[777]/---data.csv[666]
                                                                          spc.csv[666]
                                                                           no.dat[666]
                                                                         temp.dat[666]
                                                                  index.html[変更なし]
                                                                   .htaccess[変更なし]

                                                           /lock[777]/---mail.lok[666]

最初は上記のパーミッションに設定して、徐々に各ファイルを

777⇒707
755⇒705
666⇒606
644⇒604


などのようにきつくしていくといいと思います。
あとは、任意に設置したメールフォームに

<form action=設置パス/hi-mail.cgi>

と記述すればOKです。
スクリプト動作の都合上、フォームのname値で[send_mes_go]だけは使えませんが、あとはどんな名前のものを使っていただいてもかまいません。


▲このページの上に戻る▲



Hi-Mail の便利な活用法


Hi-Mail は特定の条件が一致したときだけに通し番号を自動発行したり、同様に特定の条件が一致したときだけメールの文面と件名を変えることができること、フォームから入力された内容を自由に差し込みできることなどを利用して非常に便利な使い方ができます。





ケース1:特定の条件が揃ったときに自動で通し番号を発行する場合

例えば、
<input type=radio name="ご用件" value="お申し込み">
<input type=radio name="ご用件" value="その他">

こんな選択肢のラジオボタンの項目があったときに、「ご用件」が「お申し込み」だったときに”お申し込み番号”などを自動で発行できればとても便利ですよね。
逆に「ご用件」が「その他」だったときには”お申し込み番号”は発行したくありません。
そんな設定もHi-Mail ならカンタンにできちゃいます!


conf.cgi%num_cond = (''=>'',''=>'');に、'name値'=>'value値'の形で
%num_cond = ('ご用件'=>'お申し込み');
と記述すれば、「ご用件」の項目で「お申し込み」が選択されていたときだけ、”お申し込み番号”を自動発行させることができます。
%num_cond = (''=>'',''=>'');には複数の条件をいくつでも設定できますので、複雑な条件を指定したいときにも対応できます。


複数の条件を指定したときに、全ての条件を満たしたときのみ通し番号を発行するのか、条件のうちどれか一つでも満たせば通し番号を発行するのかもカンタンに設定できます。
conf.cgi$num_andor = '';
$num_andor = '1';
とすれば、全ての条件を満たしたときのみ通し番号を発行し、
$num_andor = ''; または $num_andor = '0';
とすれば、設定した条件のうちどれか一つでも満たせば通し番号を発行するようにできます。


通し番号自体の名称も自由に変更できます。
conf.cgi$num_name = '';
$num_name = 'お問い合わせ番号';
とすれば「お問い合わせ番号」、
$num_name = '予約No';
とすれば「予約No」となります。


通し番号の桁数を変更する場合は
conf.cgi$num_beams = '';で任意の数字を設定します。


通し番号の先頭になんらかの文字を付けたい場合は
conf.cgi$num_head = '';に任意の文字を設定します。
$num_head = 'Q';
とすれば「お問い合わせ番号:Q00212」などとなります。

▲活用法メニューへ▲




ケース2:特定の条件が揃ったときにメールの件名・本文を変更したい場合

ケース1と似ていますが、メールフォームからの入力内容によって自動返信する内容を変えたいというシチュエーションはけっこうあると思います。
そんなときもHi-Mail にオマカセっ!


サンプルフォームで実際に設定していますが、
conf.cgi@sub_costm_cond@sub_admin_cond に'name値'=>'value値'の形で条件を設定します。
@sub_costm_cond には送信者宛の件名とメール文面を変更する条件、
@sub_admin_cond には管理者宛の件名とメール文面を変更する条件を設定します。
それぞれ、条件は一つまでとなります。


この設定をする場合は
conf.cgi
$sub_costm2 (送信者宛件名2)
$send_mes_costm2 (送信者宛文面2)
$sub_admin2 (管理者宛件名2)
$send_mes_admin2 (管理者宛文面2)
これらの項目も設定します。


例えば@sub_costm_cond
@sub_costm_cond = ('送信内容'=>'ひやかし');
とすれば「送信内容」が「ひやかし」だったときに
conf.cgi$sub_costm2$send_mes_costm2 に設定した件名と文面が送信者に送られます。


また、件名には通し番号を差し込むことができます。例えば送信者宛てメール件名(1)の $sub_costm1
$sub_costm1 = '###番号### ご予約頂きましてありがとうございます';
などとすれば、###番号### の部分と通し番号が入れ替わり、
「ご予約番号:T203156 ご予約頂きましてありがとうございます」
といった件名にすることも可能ですので、同一の送信者から複数回のメール送信があっても件名だけでメールを一意に識別することができます。

▲活用法メニューへ▲




ケース3:送信者から管理者に送られてくるメールの送信者名を設定する場合

通常のメールフォームだと、送信者から管理者に送られてくるメールの「送信者名」が管理者の名前になっていたり、件名も送信者に送るものと同じものになってしまうことが多いようです。しかしこれだと、送信者に返信をするときにいちいちメールアドレスと件名を記入しないといけなく、面倒なことこの上ありません。
Hi-Mail ならこんな問題も朝飯前です(^^


conf.cgi$namae = '';
$namae = 'お名前'; など、


$keisyou = ' ';
$keisyou = ' 様'; など、


$mail_to = '';
$mail_to = 'メール'; などとしておけば、


送信者からメールが届いたときの送信者名は「送信者名 様」となり、送信者に返信をするときも自動的に「送信者名 様」 <送信者のメールアドレス>となるので、と〜っても楽チンです!

▲活用法メニューへ▲




ケース4:送信者が入力するメールアドレスの間違いを防ぎたい場合


商用のWEBサイトにおいて、送信者がメールフォームに入力したメールアドレスが間違っていたために連絡が取れなくなり、商品が届かないなどのクレームとなってしまうことは、実はよくあります。
やっぱりHi-Mail ならこんな問題も朝飯前の昼飯抜き(死語)です(^-^;;


conf.cgi@mail_chek = ('',''); に、
@mail_chek = ('メール','メール(再入力)');
などとしておけば、@mail_chek に設定された項目の入力内容を、正規表現というものを使って正確に書式チェックしますので、メールアドレスの入力ミスが激減します。


また、%sames = ('',''); に、
%sames = ('メール'=>'メール(再入力)');
などとしておけば、%sames に設定された項目の入力内容が一致しなかった場合はエラーとなりますので、さらに確実性を高めることができます。


@mail_chekと同様に @url_chek = (''); に、
@url_chek = ('URL');
などとしておけば、@url_chek に設定された項目の入力内容を、@mail_chek同様、正規表現というものを使って正確に書式チェックしますので、ホームページアドレスの入力ミスが激減します。

▲活用法メニューへ▲




ケース5:複数選択可能な項目(チェックボックスなど)の項目を一つにまとめたい場合


チェックボックスやリストボックスなどの複数選択可能なフォームの項目では、2つ以上の項目が選択された場合や何も選択されなかった場合に項目数が増えたり減ったりしてしまいます。例えば次のようなメールフォームがあるとします。

<input type="checkbox" name="趣味" value="囲碁">
<input type="checkbox" name="趣味" value="釣り">
<input type="checkbox" name="趣味" value="野球">


このメールフォームで「囲碁」と「野球」が選択されたときだと、メールや送信情報を記録するCSVファイルでは

趣味:囲碁
趣味:野球


などと2行になってしまいます。
逆にもし何も選択されなかったときには

(空白)

となり、CSVデータのフィールド(列)位置がずれてしまいます。一見するとたいした問題ではないようにも感じますが、メールフォームから得られた情報を後で集計したいときやDM配信をしたいときなど、いちいち手動でデータをずらすという気の遠くなる作業が待っています。これでは効率がよいとは言えませんね(^-^;;
でもHi-Mail なら、こんな問題も楽勝!


まず入力内容をまとめたいチェックボックスやリストボックスなどの項目名を
conf.cgi@check_box = ('','');
@check_box = ('趣味');
などとします。いくつでも設定できます。


そして、実際のメールフォームの

<input type="checkbox" name="趣味" value="囲碁">
<input type="checkbox" name="趣味" value="釣り">
<input type="checkbox" name="趣味" value="野球">


のすぐ下に @check_box に設定した項目名と同じ項目名の hiddenタイプ の一文

<input type="hidden" name="趣味" value="">

を追加します。 value は空のままでけっこうです。実際には

<input type="checkbox" name="趣味" value="囲碁">
<input type="checkbox" name="趣味" value="釣り">
<input type="checkbox" name="趣味" value="野球">

<input type="hidden" name="趣味" value="">

こんな感じになります。これだけで、@check_box に設定した項目に入力されたデータが複数であろうと未入力であろうと必ず一つにまとめて、項目名が消えてしまうということもありません。これでCSVファイル上でも完全にデータのフィールド(列)位置をキープします。

▲活用法メニューへ▲




ケース6:メールフォームから入力されるデータ量に制限を設けて、メールが読みやすいように指定文字数で改行したい場合


WEBサイト運営を長くやっていると、ときどき悪意ある第三者から膨大な量の長文を送信されたりすることがあります。そうするとメールボックスがパンクしたり不必要なメールの受信をすることとなり業務に障害が出てしまいます。また、一般の送信者からでも長文のご意見をいただくことがありますが、そのような内容をメールソフトで開くと横に長く広がってしまい大変読みにくいものです。
でもHi-Mail なら楽々です!


conf.cgi%data_limits = (''=>''); に、'name値'=>'半角文字数'の形で
%data_limits = ('ご意見'=>'1000');
などとしておけば、「ご意見」の項目には半角1000文字を超えて入力することができなくなります。


また、%auto_wrap = (''=>''); に、'name値'=>'半角文字数'の形で
%auto_wrap = ('ご意見'=>'70');
などとしておけば、「ご意見」の項目に入力された文字列は自動的に半角70文字で改行されてメール送信されるので、送信者も管理者もメールが読みやすくなります。

万一、悪意ある送信者から嫌がらせ等のメールが送られてきたら、その送信者のホスト名を
@deny_host = ('');
に登録してしまえば、その送信者は今後Hi-mail から送信することができなくなります。

▲活用法メニューへ▲




ケース7:メールの文面にフォームからの入力値を差し込んで自然な文章を作りたい場合


普通のメールフォームの自動返信メールは、ただ入力項目が並んで記載されているだけで、今ひとつ味気ないものですが、Hi-Mail なら送信者がメールフォームから入力した内容をメール文面内に自由に差し込んで自然な文章を作成して自動返信することができます。


conf.cgi$send_mes_costm1 など、メールの文面を定義している部分の中に、
##name値##
とすることによって、該当するname値の入力内容を差し込むことができます。
「#」の数がname値の前後に2つづつであることに注意して下さい。
この機能を使う場合は該当するname値を入力必須にしておくことを忘れないようにして下さい(^^;


同様に、
###送信日時###
###ホスト###
###ブラウザ###
###番号###
とすることにより、送信された日時、送信者の利用ホスト、送信者の利用ブラウザ、通し番号を任意の位置に差し込むことができます。
「#」の数が項目名の前後に3つづつであることに注意して下さい。


メール文面内の
##send_data##
の位置にはメールフォームから入力されたデータを連結したものが差し込まれますが、この部分を削除してしまえば自動返信とは思えない自然な文章を作成することもできます。


例えば、下記のようなメール文面を作ってもいいかもしれません。
(思いっきり ##send_data## を残してますが(^^; )


$send_mes_costm1 = <<'EOF';
##お名前##さん、この度はWeb-UPに##依頼内容##を依頼してくれてどうもね〜♪

ところで、##お名前##さん、##依頼内容####スクリプト名##でいいのかな?
一応、##お名前##さんが送信してくれた内容を下に書いておくから確認してみてねっ!

###送信日時###
##send_data##


そんじゃ、担当の##担当者##がお返事するからまっててね!
ばいぴょーん!


/// [ Web-UP ] ////////////////////
Net-BP
Add:札幌市東区東苗穂1条2丁目6番
Tel/Fax: 011-784-0937
URL:http://web-up.cside.biz/
Mail:info@web-up.cside.biz
//////////////////////////////////
EOF


・・・まぁ、このへんはご自由にどうぞ(^-^;;
ちなみに上の例だと、実際のフォーム上では##担当者##に該当する部分を
<input type=hidden name="担当者" value="田久保">
のように、hiddenタイプとして送信者からは見えないようにしてあります。

▲活用法メニューへ▲




余談:メールフォームから日本語入力をコントロールする

わりと有名な話だとは思いますが、インターネットエクスプローラーに限り、<input type=text ・・・>などの文字を入力するフィールドで、スタイルシートを使って「IME」の日本語入力をコントロールすることができます。例えば

<input type=hidden name="お名前" style="ime-mode:active"> (日本語入力強制オン)
<input type=hidden name="お名前" style="ime-mode:inactive"> (日本語入力強制オフ)
<input type=hidden name="お名前" style="ime-mode:disabled"> (日本語入力無効)

こんな感じでHTMLだけで日本語入力のオン・オフ・無効をコントロールすることができます。


activeinactiveは送信者がそのフィールド上で任意に日本語入力のオン・オフを切り替えることができますが、disabledの場合はIMEが完全に無効となり日本語入力をオンにすることができなくなりますので、メールアドレスなど日本語を入力して欲しくない部分に style="ime-mode:disabled" を設定しておくとよいでしょう。ちなみにネットスケープではime-modeプロパティは無効となりなんの効果もありません。
サンプルフォームにも適用してありますので試してみて下さい。


▲活用法メニューへ▲

▲このページの上に戻る▲




Hi-Mail を便利に活用して下さい!


実際にHi-Mail を使ってみた方が「こりゃ便利!」と言ってくれた使い方をつらつらと並べてみましたが、Hi-Mail が役立つシチュエーションは他にもたくさんあると思います。あなたなりの使い方を見つけて便利に役立てて下さいね〜!(^^


▲このページの上に戻る▲



「Hi-Mail」の推奨動作環境
- サーバOS
サーバOSはUNIXを前提としています。
- サーバWEBソフト (HTTPD)
HTTPDはApacheを前提としています。
- サーバメールソフト
メールソフトはSendmailを前提としています。
- サーバPerlソフト
Perlについては、Perl5を前提としています。
(CGIスクリプト開発環境)
当CGIスクリプトは以下の環境で開発しています。
OS : Windows2000
Perl : ActivePerl v5.6.1
HTTPD : Apache HTTP Server 1.3.24




▲このページの上に戻る▲

ホーム > CGI配布コーナー > Hi-Mailお問い合わせ