2011/04/04

postmail

PostMail
(フォームメール)

  サンプルと特長
  • ホームページの画面上で入力された内容を、指定した電子メールアドレスに送信する「フォームメール」です。
  • ホームページへの訪問者からの感想やアンケート、資料の請求、注文の受け付け等々、汎用的な用途に利用することができます。
  • サンプルは以下にあります。POST-MAIL
  • PostMailの機能的な特長は以下のとおりです。
    1. ブラウザから指定のアドレスへメール送信を行ないます。
    2. 送信形式は、sendmailのほかに Perlモジュール(IO:Socket)を使った送信も可能です(*1)。このため、sendmailを利用できないサーバでもフォームメールの設置が可能です。
    3. 送信前に確認画面をいったん表示させることが可能です(設定で選択)。
    4. 項目ごとに「入力必須」を指定することができます。
    5. 2つの入力項目の内容が同一かどうかをチェックすることができます。(メールアドレスの入力チェックやパスワードチェックなど)
    6. 各画面はテンプレート式になっているため、ユーザサイドで自由に文字修正やデザイン変更をすることができます。
    *1 : Perlモジュールによるメール送信とは、Perl5以上に標準で装備されるIO:Socketモジュールを使って直接送信サーバ(SMTPサーバ)へ接続して送信を行ないます。
    Perlモジュールが使用できないサーバ(@niftyなど)や、CGIからのソケット通信が禁止されているサーバではご利用できません。
  • なお、HTMLページ側 ( postmail.html ) の「フォームタグ」の記述の仕方については、これはHTML文法上に従って変更していただくことになりますが、フォームタグの記述例については「補足事項」を参考にして下さい。詳しくは、「とほほのWWW入門」の
    タグのコーナ」などを見て各自で工夫していただくようにお願い致します。KentWebでは、「フォームタグ」の記述に関する質問はお受けできませんので、ご注意ください。
  • このスクリプトを利用する上での利用規定です。必ず目を通しておいて下さい。 スクリプトをダウンロードする場合、無条件に「利用規定」に同意したものとみなします。
プログラムは、セキュリティ対策を施した v3.4以降を必ずご使用ください。



  プログラムの入手
  • 以下の書庫(圧縮)ファイルをダウンロードします。
    Ver: 4.32
    ZIP形式
    postmail.zip

  • ダウンロード後、解凍 します。解凍すると以下のファイルが展開されます。

    postmail.cgi
    postmail.html
    data/log.cgi
    tmpl/body.txt
    tmpl/conf.html
    tmpl/thx.html
    tmpl/err1.html
    tmpl/err2.html
    lib/io-socket.pl
    lib/jcode.pl ... ( 歌代和正氏のライブラリを再配布するものです )

  • また、任意ですが、別途以下のライブラリを入手しておくことを推奨します。mimew.pl ( 入手先: mime_plsのページ )
    (生田昇氏作のBASE64変換ライブラリ)



  プログラムの修正
  • ホームディレクトリ(ここでは public_htmlディレクトリとします)の下に、postmailディレクトリを作成し、さらにその配下に libディレクトリを設置します。全体のディレクトリ構成とファイル位置の設置例は以下のとおりです。(かっこ内はパーミッションの設定値)
    【ディレクトリ構成例】
    public_html / index.html (トップページ)
        |
        +-- postmail / postmail.html
               |       postmail.cgi   [705]
               |
               +-- lib / jcode.pl     [604]
               |         io-socket.pl [604]
               |         mimew.pl     [604] ... 任意
               |
               +-- data / log.cgi     [606]
               |
               +-- tmpl / body.txt
                          conf.html
                          thx.html
                          err1.html
                          err2.html
    

  • postmail.cgi を エディタ で開いて以下の箇所を修正します。
    #!/usr/local/bin/perl
     (プロバイダで定められたPerlへのパスを指定します)
    $mimew = './mimew.pl';
     (MIMEエンコードライブラリを使う場合、mimier.pl をパス付きで指定します。これはメールヘッダの全角文字をBASE64エンコードする機能で、この機能の利用を推奨しています)
    $mailto = "xxx@xxx.xxx";
     (送信するメールアドレスを指定します)
    $subject = "フォームメール";
     (お好きなタイトル名に変更して下さい)
    $reload = 0;
     (送信後、単に完了メッセージを出すのであれば 0 を、所定のページへ自動ジャンプさせたい場合には、1 とします。後者の場合、ジャンプ先は $back で指定するURLとなります)
    $back = '../index.html';
     (送信後の戻り先URLです。http://からのフルパスで指定します)
    $send_type = 1;
     (メールの送信形式を指定します。「1」はsendmail送信、「2」はPerlモジュールを使った送信方法になります。「2」を利用する場合、プロバイダ側でPerlモジュールによるソケット通信が可能である必要があります)
    $sendmail = "/usr/lib/sendmail";
     ($send_typeで「1」の場合、メールプログラムまでのパスを指定します。プロバイダの指定するパスを確認してください)
    $denyhost = '^210.123.44.* .sky-net.br$';
     (拒否するホスト名又はIPアドレスを半角スペースで区切って複数指定することができます)
    $no_wd = 'あほ,アホ';
     (禁止ワードをコンマで区切って複数指定することができます)
    $server = "mail.server.xx.jp";
     ($send_typeで「2」の場合、SMTPサーバ名を指定します)
    $port = 25;
     ($send_typeで「2」の場合、SMTPのポート番号を指定します。通常は25です)
    $pop_bef_smtp = 0;
     ($send_typeで「2」の場合、POP before SMTPを使用しない場合は「0」を、使用する場合は「1」とします)
    $pop3sv = "mail.server.xx.jp";
     ($send_typeで「2」で、$pop_bef_smtpが「1」の場合、POP3サーバ名を指定します)
    $pop3port = 110;
     ($send_typeで「2」で、$pop_bef_smtpが「1」の場合、POP3のポート番号を指定します。通常は110です)
    $user = user_id;
     ($send_typeで「2」で、$pop_bef_smtpが「1」の場合、POP3サーバのユーザIDを指定します)
    $pass = password;
     ($send_typeで「2」で、$pop_bef_smtpが「1」の場合、POP3サーバのパスワードを指定します)

  • 以上、修正が完了したら各ファイルを所定のディレクトリへFTP転送し、以下のとおり アクセス権 (パーミッション) を設定します。

    ファイル名パーミッション転送モード
    一般サーバsuEXECサーバ
    CGIWrapサーバ
    postmail.cgi755 or 705701 or 700アスキー
    jcode.pl
    io-socket.pl
    mimew.pl
    644 or 604600アスキー
    log.cgi666 or 606600アスキー
    *.html
    *.txt
    --アスキー


    Tips:ファイル転送の仕方は以下のページを参考にしてください。
     Windows編 Mac編



  • 以上、設置が完了したらチェックモードで起動させてみましょう。チェックモードとする場合には、postmail.cgi の末尾に、「?mode=check」という引数を付けて直接呼び出します。【起動例】
    http://~~/postmail/postmail.cgi?mode=check

  • チェックモードで特にエラーが表示されないようであれば、最後にHTMLから postmail.htmlにリンクします。【タグ記述例】
    メール送信フォーム




  補足事項
  • 各画面はテンプレート式ですので、ユーザサイドで自由に内容やデザイン変更が可能です。

    tmp_body.txtメッセージ本文
    tmp_conf.html入力内容確認画面
    tmp_thx.html送信完了画面
    tmp_err1.html一般エラー画面
    tmp_err2.html入力内容エラー画面

    ※【注】
    各HTMLファイル中のコメント文 ( など) および、 先頭にドルマークが付加されたもの($back など)は削除しないように注意してください。
    それ以外は原則として自由に変更して構いません。
  • postmail.htmlは送信フォーム見本ですが、注意事項としては以下のとおりです。
     [ 送信フォーム (HTML) の記述方法 ]
    
     ・タグの記述 (1)
       おなまえ 
       → このフォームに「山田太郎」と入力して送信すると、
          「name = 山田太郎」という形式で受信します
    
     ・タグの記述 (2)
       お好きな色 
       → このラジオボックスにチェックして送信すると、
          「color = 青」という形式で受信します
    
     ・タグの記述 (3)
       E-mail 
       → name値に「email」という文字を使うとこれはメールアドレス
          と認識し、アドレスの書式を簡易チェックします
       → (○) abc@xxx.co.jp
       → (×) abc.xxx.co.jp → 入力エラーとなります
    
     ・タグの記述 (4)
        メール控え必要
       → メールの控えを CC で送信者へも返信します。
          ただし、name="email" のフィールドへの入力が必須となります。
    
     ・タグの記述 (5)
       E-mail 
       → name値の先頭に「アンダーバー 」を付けると、その入力値は
         「入力必須」となります。
          上記の例では、「メールアドレスは入力必須」となります。
    
     ・name値への「全角文字」の使用は可能です
      (例) 
      → 上記のラジオボックスにチェックを入れて送信すると、
         「年齢 = 20歳代」という書式で受け取ることができます。
    
    ・コマンドタグ (1)
      → 入力必須項目を強制指定する(半角スペースで複数指定可)
      → ラジオボタン、チェックボックス対策
      → name値を「need」、value値を「必須項目1 + 半角スペース +必須項目2 + 半角スペース ...」
      (例) 
    
    ・コマンドタグ (2)
      → 2つの入力内容が同一かをチェックする
      → name値を「match」、value値を「項目1 + 半角スペース + 項目2」
      (例) 
    
    ・コマンドタグ (3)
      → メール件名を指定する
      → この場合、設定で指定する $subject より優先されます。
      (例) 
    
  • フォームメールについては、フォームページ側 (postmail.html) のHTMLの「FORMタグ」の記述の仕方がポイントだと思います。以下のポイントを参考にしてみてください。(これ以降のコーナは「HTML」に関することであり、「質問」はお受けできませんのでご注意ください)
    【FORMタグの記述例】
    
    ▼テキスト入力: ・使い方:通常のテキスト文字を入力します ・表示例: ▼パスワード入力: ・使い方:パスワードを入力します。入力文字がアスタリスク(*)で表示されます。 ・表示例: ▼テキスト複数行入力: ・使い方:複数行のテキスト文字を入力します ・表示例: ▼ラジオボタン: ABC DEF ・使い方:択一選択のチェック項目に用います。(選択は1つのみ) ・表示例:ABC DEF ▼チェックボタン: ABC DEF ・使い方:複数選択のチェック項目に用います。(選択は複数可) ・表示例:ABC DEF ▼選択ボックス: ・使い方:択一選択のフォームに用います。(選択は1つのみ) ・表示例: ▼送信ボタン: ・使い方:タグのデータを送信実行します。 ・表示例: ▼リセットボタン: ・使い方:タグの入力項目をすべて初期値に戻します。 ・表示例:



  おすすページ

0 件のコメント: