CGI-Search | カスタマイズノートトップ
キーワード検索  

RSS1.0/RDF
データファイルベースに登録されたメールアドレスへフォームメール送信
分類: フォームメール関連
人気度: 5/5 
データファイルベースに登録されたメールアドレスデータへフォームメール機能を使ってメールを送信します。送信先メールアドレスは非公開です。
従来のユーザーフォームメール機能は一切使用せず、独自のライブラリにて作動致します。また、多数の設定項目を用意していますので独自のフォームメールを作成する事が可能です。
対象バージョン及び更新履歴
対象バージョン: ver9.85
  • 2010/03/21 ver1.2 管理者及び送信者へ控えメールを送信する機能を追加。
    利用権限がユーザーの場合、自分の登録データへのフォームメール送信を制限すように改善。
  • 2010/03/20 ver1.1 送信データ設定(%DATAMAIL)を増やした場合に送信メール反映されない不具合を修正。また、%DATAMAILを設定ごとに分割(%DATAMAIL1,%DATAMAIL2)。
  • 2010/03/18 ver1.0 AmigoDatabase ver9.85用に全面修正
  • 2006/07/02 新規公開(ファンフォーラムより移植)
  • カスタマイズ方法

    1. ダウンロード

    1) ライブラリファイル

    ライブラリファイル「db-dfm.cgi」を次のリンクよりダウンロードして下さい。
    ダウンロードファイルは「db-dfm.txt(TEXT形式)」になっています。
    ダウンロード後に「db-dfm.cgi」とファイル名を変更して下さい。

    ダウンロード db-dfm.txt

    2) テンプレートHTMLファイルとコンプリートHTMLファイル

    テンプレートHTMLファイル「formmail-data.html」とコンプリートHTMLファイル「formmail-data.html」を次のリンクよりダウンロードして下さい。同名ファイルですので取り違いにご注意ください。
    ダウンロードファイルは「formmail-data.html1.txt(TEXT形式)」と「formmail-data.html2.txt(TEXT形式)」になっています。「1」がテンプレートHTML、「2」がコンプリートHTMLファイルとなります。
    ダウンロード後にそれぞれ「formmail-data.html」とファイル名を変更して下さい。

    ダウンロード formmail-data.html1.txt
    ダウンロード formmail-data.html2.txt

    2. db-dfm.cgiの設定

    1) 基本設定

    ## データファイルベースのメールアドレス登録データ種類名
    my$SetDataMail = 'Mail';
    
    ## データフォームメール利用権限
    # (1=制限なし/2=登録ユーザー)
    $UseDataMail = 1;
    
    ## 管理者へ控えメールを送信
    # (0=送信しない/1=送信する)
    my$AdminMail = 0;
    
    ## 送信者へ控えメールを送信
    # (0=送信しない/1=送信する)
    my$MailBefore = 0;
    
    ## 前項値1(制限なし)の場合の送信データ設定
    my%DATAMAIL1 = (
    Name =>{ In => 1, Len => 30, Name => 'お名前' },
    Mail =>{ In => 1, Len => 50, Name => 'メールアドレス' },
    Mail2 =>{ In => 1, Len => 50, Name => 'メールアドレス再入力' },
    Subject =>{ In => 1, Len => 100, Name => 'サブジェクト' },
    Body =>{ In => 1, Len => 1000, Name => '本文' },
    );
    
    ## 前項値2(登録ユーザー)の場合の送信データ設定
    my%DATAMAIL2 = (
    Subject =>{ In => 1, Len => 100, Name => 'サブジェクト' },
    Body =>{ In => 1, Len => 1000, Name => '本文' },
    );
    • $SetDataMail : データファイルベースでのメールアドレスを保存してるデータ種類名を指定します。
    • $UseDataMail : フォームメールの利用制限を設定します。
      ・[1]は登録ユーザー以外でも利用可能です。
      ・[2]は登録ユーザーのみ利用可能です。
      ・[1]と[2]以外ではエラーを返します。
    • $AdminMail : 管理者へ控えメールを送信するかを設定します。
    • $MailBefore : 送信者へ控えメールを送信するかを設定します。
    • %DATAMAIL1 : メールフォームで使用するフォームデータを設定出来ます。
      • Name => { ... } が1データ当たりの設定となります。この「Name」をフォームの「name」部分に設定します。例)<input type="text" name="Name">
      • { ... } の部分にてその属性を設定します
        • [In] は入力必須の有無(1=必須/0=未入力可能)
        • [Len] は入力最大文字数(半角**文字となる)
        • [Name] はそのデータの名称 'お名前' とするとエラー時などに「お名前が未入力です」などとなる
      • この設定はメールフォームで $DATAMAIL1{Mail}{Name} とすることでフォーム名称としても利用可能です。
        ※登録ユーザーの場合は $DATAMAIL2{Subject}{Name} とします。

    2) フォームメール設定

    フォームメールのフォーム部分を設定出来ます。
    サブルーチン「DataMail_1」「DataMail_2」に設定します。
    「_1」や「_2」は $UseDataMail での設定に一致します。
    print <<EOM;
    ... この間であれば自由に設定出来ます ...
    EOM
    「%DATAMAIL1」又は「%DATAMAIL2」にて設定したデータ項目で「Name」部分を表示出来ます。
    $DATAMAIL1{Subject}{Name} → サブジェクト
    $DATAMAIL1{Mail}{Name} → メールアドレス
    送信先データ情報を表示出来ます。通常の「$VD[$REC{Data}{データ名}]」と同じです。
    $VD[$REC{Data}{DataNum}] → データ番号
    $VD[$REC{Data}{HPName}] → ホームページ名

    3) メールテンプレート設定

    送信メールの中身を設定出来ます。
    サブルーチン「DataMailTemplate_1」「DataMailTemplate_2」に設定します。
    「_1」や「_2」は前項と同じです。設定場所も同様になります。

    送信先データのデータ情報を表示出来ます。
    $TargetData[$REC{Data}{DataNum}] → データ番号
    $TargetData[$REC{Data}{HPName}] → ホームページ名
    登録ユーザーのみの「DataMailTemplate_2」の場合は送信者ユーザーの情報も表示可能です。
    $FromUser[$REC{User}{UserNum}] → ユーザー番号
    $FromUser[$REC{User}{Name}] → ユーザー名
    同様に「控えメールテンプレート」の「MailBefore_*」サブルーチンと「管理者控えメールテンプレート」の「AdminDataMail」サブルーチンも修正します。

    3. FTPアップロードとパーミッション

    db-dfm.cgi → database/libディレクトリ
    formmail-data.html(1の方) → database/lib/templateディレクトリ
    formmail-data.html(2の方) → database/lib/template/completeディレクトリ
    それぞれFTPアップロードし、パーミッションを設定します。パーミッションは全て[644]or[604]となります。

    4. database.cgiの修正

    次のように修正します。
      @cmd{'ac','ar','c','ca','uj','uja','dj','dja', ... 省略
      省略 ... ,'lo','s','dl','aul','adl','dp','fm','fma','lt'}='';
    + @cmd{'dfm','dfma'}='';
      
      ... 省略 ...
      
      sub fma{ &Lrequire('./lib/db-fm.cgi'); &FormMailAct }
      sub lt { &Lrequire('./lib/db-lt.cgi'); &LockTest }
    + sub dfm{ &Lrequire('./lib/db-dfm.cgi'); &DataFormMail }
    + sub dfma{ &Lrequire('./lib/db-dfm.cgi'); &DataFormMailAct }
    ※追加する「@cmd{'dfm','dfma'}='';」は既に他のカスタマイズで追加している場合、その中に追加しても結構です。その場合「@cmd{'***','***','dfm','dfma'}='';」のようにします。

    5. データ詳細ページの修正

    対象のデータ詳細ページにメールフォームへのリンクを追加します。
    デフォルトでは「lib/template/data-part/data/default.html」となります。
    次のリンクタグを任意の場所に追加します。
    <a href="$BaseDir/$MainCGI?cmd=dfm&To=$VD[$REC{$FORM{Tfile}}{DataNum}]">メールを送る</a>
    利用方法
    「5. データ詳細ページの修正」にて追加したリンクをクリックすることで利用可能です。
    「$UseDataMail」にて設定した値によりフォームメールのフォーム部分が自動的に変化するようになっています。
    引用文中の「+」や「-」についてはこちらをご覧下さい。引用文の「+」や「-」が正しく表示されていない場合があります。「view plain」をクリックして頂ければ正しい引用文が表示されます。
    update at 2010/03/21(Sun) 22:32:45. DataNum 30 [ TOP ]

    Comment: 投稿数(1)

    ユーザーのメールアドレスを返信先にしたい
    カスタマイズの質問です。
    フォームから送信されたメールに対して、メーラーで直接返信させたいです。現状では返信先が管理者のアドレスになっているので個別に出来ません。各ユーザーのメールアドレスを返信先に割り当てることは出来ませんでしょうか。
    Posted by Kiririn at 2016/09/10(土) 09:12 [ 編集 ]
    Comment System by CGI-Search

    Comment Form: 投稿数(1)


    コメント投稿は登録ユーザー限定です。ログインした状態でご利用下さい。
    • カスタマイズへのご意見やご要望などのコメントにご利用下さい。
    • 不適切な発言は即時削除致します。
    • 管理人はコメントに対し一切お返事を致しませんの予めご了承下さい。
    • 導入トラブルやご質問、バグの報告はAmigoDatabaseファンフォーラムまでお願いします。
    [ TOP ]