CmfFormMail

[更新内容]

(注)このCGIはsendmailが使用可能な環境が必要です

[ 機能説明 ]

  • ダウンロードして最低限の設定(Perlのパス、メールアドレス、sendmailのパス、戻り先URL)ですぐ使用できます
  • メールの送信先を複数設定できます
  • 送信者へメールのコピーを送れます
  • 最大投稿文字数の制限
  • IPアドレスによるアクセス制限
  • 海外サーバー用に時差調整が可能
  • 各項目の入力必須設定
  • テキストエリア内の文字列の自動改行機能
  • 項目を簡単に且つ好きなだけ追加できます
  • 追加できる項目は一行テキスト、プルダウン、マルチプル、ラジオボタン、チェックボックス、テキストエリア、添付ファイルフォームです
  • プルダウンでは「西暦年月日」「都道府県」フォーマットが用意されており、CGI内の設定で簡単に表示させることができます
  • 添付ファイルフォームでは添付できるファイルサイズの制限が可能
  • 投稿内容をCSVファイルに保存できます
  • 上記以外にも詳細な設定が可能です
  • [ 設置方法 ]

    ■↓のファイルがあるか確認して下さい
    ファイル名 パーミッション 説明
    cmfmail.cgi 755 スクリプト本体
    jcode.pl 644 日本語コード変換ライブラリ
    stdio.pl 644 標準入出力ライブラリ
    fold.pl 644 日本語文字列分割ライブラリ
    images(u_l.gif/u_r.gif/l_l.gif/l_r.gif/dmy.gif) --- フォーム用画像
    readme.html --- 設置マニュアル

    ■cmfmail.cgiをエディタ等で開いて、下記の部分を設定して下さい

    [ 1行目 ]

    Perlのパスを指定(分からない場合はサーバー管理者に問い合わせて下さい)
    #!/usr/local/bin/perl

    [ 基本設定 ]

    1.送信先メールアドレス
    複数指定する場合は('mail1@example.com','mail2@example.com','mail3@example.com')と指定して下さい
    @MailAddr = ('mail@example.com');

    2.投稿があった際にFromに名前を入れる
    $HeaderFrom = 0; #(0:OFF/1:ON)

    3.このCGIの名称(通常は変更不要です)
    $MyScript = 'cmfmail.cgi';

    4.戻り先URL
    $ReturnUrl = 'http://';

    5.sendmailのパス(分からない場合はサーバー管理者に問い合わせて下さい)
    $SendMail = '/usr/sbin/sendmail';

    6.最大投稿文字数(byte)
    $MaxLength = 200000;

    7.アクセスを拒否するIPアドレス
    例) ('192.168','192.168.1','127.0.0.1')
    @AccLimit = ( );

    8.フォーム用画像を入れるディレクトリ
    (通常は変更不要、最後に「/」は入れないで下さい、http://からの指定でもOKです)
    $ImageDir = './images';

    9.海外サーバー用時差調整(最初の数字を1-24時間で指定)
    例)15時間進める場合15*60*60/15時間遅らせる場合-15*60*60)
    $TimeDiff = 0;

    10.stdio.plのパス(通常は変更不要です)
    $LibStdio = './stdio.pl';

    11.jcode.plまでのパス(通常は変更不要です)
    $LibJcode = './jcode.pl';

    12.fold.plのパス(通常は変更不要です)
    $LibFold = './fold.pl';

    [ フォーム全体の設定 ]

    13.フォーム内全体の設定
    $FmbgColor = '#ffffff'; #背景色
    $FmbdColor = '#4275bb'; #ボーダーカラー
    $FmbdSize = 1; #ボーダーサイズ
    $FmftColor = '#4275bb'; #フォントカラー
    $FmftFace = 'MS UI Gothic'; #フォントの種類
    $FmftSize = '12px'; #フォントサイズ
    $FmtbWidth = 400; #フォームの幅(%指定は不可)

    14.フォーム外の背景
    $BackColor = '#4275bb'; #色
    $BackImage = ''; #画像までのパス(http://からでもOKです)
    $BackFix = 1; #画像の固定(0:OFF/1:ON)

    15.タイトルサイズ/色の設定
    $TitleColor = '#ffffff'; #フォントカラー
    $TitleSize = '18px'; #フォントサイズ

    16.コメントサイズ/色の設定
    $CommColor = '#ffffff'; #フォントカラー
    $CommSize = '14px'; #フォントサイズ

    17.LINK色の設定
    $LinkNormal = '#4275bb'; #未訪問
    $LinkVisit = '#4275bb'; #訪問済
    $LinkHover = '#4275bb'; #アクティブ

    18.スクロールバーの色設定
    $ScrlArrow = '#ffffff'; #arrow
    $ScrlBase = '#80BFFF'; #base
    $ScrlFace = '#4275bb'; #face
    $ScrlHigh = '#4275bb'; #highlight
    $ScrlShadow = '#4275bb'; #shadow
    $ScrlDlight = '#80BFFF'; #3dlight
    $ScrlDark = '#4275bb'; #darkshadow
    $ScrlTrack = '#80BFFF'; #track

    [ 入力フォームの設定 ]

    19.入力欄全体の設定
    $InputbgCol = '#4275bb'; #背景色
    $InputbdCol = '#4275bb'; #ボーダーカラー
    $InputbdSiz = 2; #ボーダーサイズ
    $InputftCol = '#ffffff'; #フォントカラー
    $InputftFce = 'MS UI Gothic'; #フォントの種類
    $InputftSiz = '12px'; #フォントサイズ

    20.件名入力欄の設定
    $SubFix = 1; #入力欄の表示(0:OFF/1:ON)
    $SubTtl = 'Title'; #名称
    $SubJect = 'メールフォームからの投稿です。'; #入力欄非表示の時の件名
    $SubSize = 30; #入力欄のサイズ
    $SubSurely = 1; #入力欄表示の時の入力必須(0:OFF/1:ON)
    $SubDef = ''; #入力欄にデフォルトで入れる文字列
    $SubNum = 0; #項目全体の中で上から何番目に表示するかを「0」から指定

    21.名前入力欄の設定
    $NameColumn = 'Name'; #名称
    $NameSize = 20; #入力欄のサイズ
    $NameSurely = 1; #入力必須(0:OFF/1:ON)
    $NameNum = 1; #項目全体の中で上から何番目に表示するかを「0」から指定

    22.フリガナ入力欄の設定
    $KanaFix = 1; #入力欄の表示(0:OFF/1:ON)
    $KanaColumn = 'Kana'; #名称
    $KanaSize = 20; #入力欄のサイズ
    $KanaSurely = 1; #入力必須(0:OFF/1:ON)
    $KanaNum = 2; #項目全体の中で上から何番目に表示するかを「0」から指定

    23.メールアドレス入力欄の設定
    $MailColumn = 'E-mail'; #名称
    $MailSize = 20; #入力欄のサイズ
    $MailSurely = 1; #入力必須(0:OFF/1:ON)
    $MailNum = 3; #項目全体の中で上から何番目に表示するかを「0」から指定

    24.メッセージ入力欄の名称
    $MessColumn = 'Message'; #名称
    $MessCols = 60; #入力欄の列数
    $MessRows = 5; #入力欄の行数
    $MessSurely = 1; #入力必須(0:OFF/1:ON)
    $MessNum = 18; #項目全体の中で上から何番目に表示するかを「0」から指定

    25.タイトルの設定
    $TitleName = 'Mail to Webmaster'; #名称
    $TitleImage = ''; #画像までのパス(http://からでもOKです)

    26.コメントの設定
    $CommName = 'すべて入力必須です。';

    27.送信前確認チェックボックスの名称
    $BeforeName = '送信前に内容を確認';
    $BeforeChk = 1; #デフォルトでチェックを入れる(0:OFF/1:ON)

    28.メールコピーチェックボックスの設定
    $CopyFix = 1; #表示(0:OFF/1:ON)
    $CopyName = '自分宛にコピーを送る'; #名称
    $CopyChk = 1; #デフォルトでチェックを入れる(0:OFF/1:ON)

    29.送信ボタンの名称
    $SubmitName = 'Submit';

    30.リセットボタンの名称
    $ResetName = 'Reset';

    31.Homeの設定
    $ReturnType = 1; #ボタンのタイプ(0:非表示/1:OPEN BUTTON/2:CLOSE BOTTON/3:LINK)
    $ReturnName = 'Home'; #名称
    $ReturnTget = '_top'; #$ReturnTypeがLINKの時のtarget属性

    32.テキストエリア内文字列の自動改行
    $AreaLine = 1; #(0:OFF/1:ON)
    $AreaByte = 100; #1行の文字数(byte)
    $formtitle = 'Title';

    [ 確認フォームの設定 ]

    33.タイトルの設定
    $ChktlName = 'Mail to Webmaster'; #名称
    $ChktlImage = ''; #画像までのパス(http://からでもOKです)

    34.コメントの設定
    $ChkcmmName = '間違いなければSubmitを押して下さい';

    35.送信ボタンの名称
    $ChksubName = 'Submit';

    36.Backボタンの名称
    $ChkbntName = 'Back';

    [ 送信完了フォームの設定 ]

    37.戻り先LINKの設定
    $RetType = 3; #ボタンのタイプ(0:非表示/1:OPEN BUTTON/2:CLOSE BOTTON/3:LINK)
    $RetName = 'TOP'; #名称
    $RetTarget = '_parent'; #$RetTypeがLINKの時のtarget属性

    38.タイトルの設定
    $EndtlName = 'メッセージありがとうございました'; #名称
    $EndtlImage = ''; #画像までのパス(http://からでもOKです)

    39.コメントの設定
    $EndcmmName = 'ご質問はできるだけ早くお返事したいと思います。';

    [ CSVファイルへの出力設定 ]

    40.CSVファイルへの出力
    $CsvUse = 0; #出力(0:OFF/1:ON)
    $CsvFile = './csv/data.csv'; #出力先ファイル名

    [ 項目の追加 ]

    41.一行テキストの追加
    [$Addtext]は一行テキストの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [vlue]は一行テキスト内にデフォルトで入れたい文字列を指定して下さい
    [size]は一行テキストのサイズ(長さ)を指定して下さい
    [surl]はその項目を入力必須に(yes:する/no:しない)を指定して下さい
    一行テキストの追加が複数ある場合は「@text = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddText = 1;

    @text = (
    {
    'turn' => '4',
    'name' => 'ホームページ',
    'vlue' => 'http://',
    'size' => '40',
    'surl' => 'yes',
    },
    {
    'turn' => '6',
    'name' => '住所',
    'vlue' => '',
    'size' => '50',
    'surl' => 'yes',
    },
    );

    42.プルダウンの追加
    [$AddPull]はプルダウンの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [type]はプルダウン内のメニューの出力方法を指定します
    [type]の種類は下記の3つがあります

  • normal:vlueで指定した任意の文字列
  • date:西暦年月日の自動出力
  • time:時分の自動出力
  • pref:都道府県の自動出力

  • [name]はその項目の名称(題名)を指定して下さい
    [vlue]は「type」の種類によって指定方法が変わります
    [vlue]の指定方法は下記の3つがあります
  • typeがnormalの時:表示する全てのメニューを「,」で区切って指定します
  • typeがdateの時:西暦の範囲を「1970-2002」というように指定します
  • typeがtimeの時:空欄
  • typeがprefの時:空欄

  • [size]は表示されるメニューの行数を指定して下さい
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    プルダウンの追加が複数ある場合は「@pull = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddPull = 1;

    @pull = (
    {
    'turn' => '9',
    'type' => 'normal',
    'name' => 'ごようは?',
    'vlue' => '質問,相互LINK,暇つぶし,お願い,冷やかし',
    'size' => '1',
    'surl' => 'yes',
    },
    {
    'turn' => '7',
    'type' => 'date',
    'name' => '生年月日',
    'vlue' => '1970-2002',
    'size' => '1',
    'surl' => 'yes',
    },
    {
    'turn' => '8',
    'type' => 'time',
    'name' => '時間',
    'vlue' => '',
    'size' => '1',
    'surl' => 'yes',
    },
    {
    'turn' => '5',
    'type' => 'pref',
    'name' => '都道府県',
    'vlue' => '',
    'size' => '1',
    'surl' => 'yes',
    },
    );

    43.マルチプルの追加
    [$AddMult]はマルチプルの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [vlue]は表示する全てのメニューを「,」で区切って指定します
    [size]は表示されるメニューの行数を指定して下さい
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    マルチプルの追加が複数ある場合は「@mult = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddMult = 1;

    @mult = (
    {
    'turn' => '10',
    'name' => '趣味は?<br>(複数選択可)',
    'vlue' => '映画鑑賞,テレビ鑑賞,音楽鑑賞,アウトドア,ゲーム,車,バイク,スポーツ,パソコン,読書,インターネット',
    'size' => '5',
    'surl' => 'yes',
    },
    {
    'turn' => '11',
    'name' => '好きな食べ物は?<br>(複数選択可)',
    'vlue' => 'オムライス,お寿司,焼肉,ケーキ,パスタ,カレー,ハンバーグ,ピザ',
    'size' => '3',
    'surl' => 'yes',
    },
    );

    44.ラジオボタンの追加
    [$AddRdio]はラジオボタンの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [vlue]は表示する全てのメニューを「,」で区切って指定します
    [vlue]メニューが多数あって1行で表示しきれない場合は改行タグ<br>を指定して下さい
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    ラジオボタンの追加が複数ある場合は「@rdio = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddRdio = 1;

    @rdio = (
    {
    'turn' => '12',
    'name' => '年齢は?',
    'vlue' => '10才未満,10代,20代,30代,<br>,40代,50代,60代,70才以上',
    'surl' => 'yes',
    },
    {
    'turn' => '13',
    'name' => 'インターネットの接続環境は?',
    'vlue' => 'ダイアルアップ,ISDN,ADSL,SDSL,CATV,FTTH',
    'surl' => 'yes',
    },
    );

    45.チェックボックスの追加
    [$AddChek]はチェックボックスの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [vlue]は表示する全てのメニューを「,」で区切って指定します
    [vlue]メニューが多数あって1行で表示しきれない場合は改行タグ<br>を指定して下さい
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    チェックボックスの追加が複数ある場合は「@chek = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddChek = 1;

    @chek = (
    {
    'turn' => '14',
    'name' => 'HPのジャンルは?<br>(複数選択可)',
    'vlue' => 'ゲーム,イラスト,音楽,芸能,<br>,素材,写真,旅行,その他',
    'surl' => 'yes',
    },
    {
    'turn' => '15',
    'name' => '配布して欲しいCGIは?<br>(複数選択可)',
    'vlue' => 'チャット,ゲストブック,ゲーム,日記,その他',
    'surl' => 'yes',
    },
    );

    46.テキストエリアの追加
    [$AddArea]はテキストエリアの追加(0:しない/1:する)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [vlue]はテキストエリア内にデフォルトで入れたい文字列を指定して下さい
    [vlue]テキストエリア内のデフォルト文字列を改行したい時は改行タグ<br>を指定して下さい
    [size]は行数、列数「'size' => '行数,列数',」を指定します
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    テキストエリアの追加が複数ある場合は「@area = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります

    [サンプル]
    $AddArea = 1;

    @area = (
    {
    'turn' => '19',
    'name' => '備考欄1',
    'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
    'size' => '5,60',
    'surl' => 'yes',
    },
    {
    'turn' => '20',
    'name' => '備考欄2',
    'vlue' => 'メッセージ以外に何かある場合はこちらに記入して下さい',
    'size' => '5,60',
    'surl' => 'yes',
    },
    );

    47.添付ファイルフォームの追加
    [$AddAttc]は添付ファイルフォームの追加(0:しない/1:する)を指定して下さい
    [$AttcTmp]は添付ファイルを一時的に保管するディレクトリパスを指定して下さい
    [$AttcEnc]は添付ファイルのエンコード形式(0:base64encode/1:uuencode)を指定して下さい
    [turn]は項目全体の中で上から何番目に表示するかを「0」から指定して下さい
    [turn]は他の項目と重複しないように注意して下さい
    [name]はその項目の名称(題名)を指定して下さい
    [size]は添付ファイルフォームのサイズ(長さ)を指定して下さい
    [capa]は添付ファイルの最大ファイルサイズ(byte)を指定して下さい
    [surl]はその項目を選択必須に(yes:する/no:しない)を指定して下さい
    添付ファイルフォームの追加が複数ある場合は「@attc = ({・・・},{・・・},);」となります
    追加項目は「{・・・},」までが1組となります
    添付ファイルフォームを追加した場合、
    cmfmail.cgiと同じ場所に「temp」ディレクトリを作成してパーミッションを777にする必要があります


    [サンプル]
    $AddAttc = 1;

    $AttcTmp = './temp/';
    $AttcEnc = 0;
    @attc = (
    {
    'turn' => '16',
    'name' => '添付ファイル1',
    'size' => '40',
    'capa' => '100000',
    'surl' => 'no',
    },
    {
    'turn' => '17',
    'name' => '添付ファイル2',
    'size' => '40',
    'capa' => '100000',
    'surl' => 'no',
    },
    );

    ■以上の設定が終わったら、↓のようにアップロードしそれぞれパーミッションを設定して下さい

    
    ■ディレクトリ構成
    
    /トップディレクトリ/
            |
            |---/cgi-bin/(CGIが動作するディレクトリ)
                   |
                   |---cmfmail.cgi[ 755 ](スクリプト本体)
                   |
                   |---jcode.pl[ 644 ](日本語コード変換ライブラリ)
                   |
                   |---stdio.pl[ 644 ](標準入出力ライブラリ)
                   |
                   |---fold.pl[ 644 ](日本語文字列分割ライブラリ)
                   |
                   |---/images/(フォーム用画像を入れるディレクトリ)
                   |        |
                   |        |---u_l.gif/u_r.gif/l_l.gif/l_r.gif/dmy.gif
                   |
                   |---/temp/[ 777 ](添付ファイルフォームを追加した場合のみ必要)
                   |
                   |---/csv/[ 777 ](CSVファイルへの出力を有効にした場合のみ必要)
    
    

    *[ ]内の数字はパーミッションです。

    ■アップロードが終わったら、cmfmail.cgiにアクセスして送信テストを行い、メールが届けば設置は完了です

    うまく設置できない時は、MAILか当サイトのサポートBBSにてご連絡下さい
    またバグが見つかったときもお手数ですが同様にご連絡下さい