かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】

メール送信(メールフォーム, sendmail)

#! /usr/local/bin/perl

use Jcode;

$SENDMAIL    = '/usr/sbin/sendmail';                # sendmailパス
$TO        = '****@*******.***';                # メール宛先
$TONAME        = '○○○○';                    # メール宛名

print qq(Content-type: text/html; charset=Shift_JIS\n\n);
print <<END;
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head><title>メールフォーム(sendmail)</title></head>
    <body style="text-align:center">
    <table style="width:80%;border:1px solid #f93">
    <tr><th style="padding:5px;background:#fc9">メールフォーム</th></tr>
    <tr>
    <td style="padding:20px">
END

if($ENV{'REQUEST_METHOD'} eq 'POST') {
    loadForm();                        # フォームデータ取得
                                # sendmailでメール送信
    $ERROR = sendMail($TONAME, $TO, $FORM{'name'}, $FORM{'email'}, $FORM{'subj'}, $FORM{'msg'});
    if($ERROR) {
        print qq(<div style="color:red;font-weight:bolder">エラー:$ERROR</div>\n);
        printForm();
    }
    else {
        print <<"        END";
            <div style="font-weight:bolder">下記の内容でメールを送信しました。</div><br>
            名前: $FORM{'name'}<br><br>
            メール: $FORM{'email'}<br><br>
            題名: $FORM{'subj'}<br><br>
            本文: $FORM{'msg'}<br><br>
        END
    }
}
else {
    printForm();
}

print <<END;
    </td>
    </tr>
    </table>
    </body>
    </html>
END

exit;


#============================================================================== メールフォーム
sub    printForm
{
    print <<"    END";
        <form action="$ENV{'SCRIPT_NAME'}" method="post">
        名前<br>
        <input type="text" name="name" value="$FORM{'name'}" size="50"><br>
        <br>
        メールアドレス<br>
        <input type="text" name="email" value="$FORM{'email'}" size="50"><br>
        <br>
        題名<br>
        <input type="text" name="subj" value="$FORM{'subj'}" size="50"><br>
        <br>
        本文<br>
        <textarea name="msg" rows="10" cols="50">$FORM{'msg'}</textarea><br>
        <br>
        <input type="submit" value="送  信">
        <input type="reset" value="リセット">
        </form>
    END
}

#============================================================================== sendmailでメール送信
sub    sendMail
{
    my    $toname    = $_[0];
    my    $to    = $_[1];
    my    $name    = $_[2];
    my    $email    = $_[3];
    my    $subj    = $_[4];
    my    $msg    = $_[5];
    if(!$name or !$email or !$subj or !$msg) {
        return("全ての項目に入力してください。");
    }
    else {
        $toname    = Jcode::convert($toname, 'jis');    # MIMEエンコード
        $toname    = Jcode::mime_encode([\$toname]);
        $name    = Jcode::convert($name, 'jis');
        $name    = Jcode::mime_encode([\$name]);
        $subj    = Jcode::convert($subj, 'jis');
        $subj    = Jcode::mime_encode([\$subj]);
        $msg    = Jcode::convert($msg, 'jis');
                                # sendmailでメール送信
#        open(MAIL, "| $SENDMAIL -t") or return("SENDMAILエラー");
#        print MAIL "To: $toname <$to>\n";
#        print MAIL "From: $name <$email>\n";
#        print MAIL "Subject: $subj\n";
#        print MAIL "Mime-Version: 1.0\n";
#        print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n\n";
#        print MAIL $msg;
#        close MAIL;
    }
    return;
}

#============================================================================== フォームデータ取り込み
sub    loadForm
{
    my    ($query, $pair);
    read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
    foreach $pair (split(/&/, $query)) {
        my    ($key, $value) = split(/=/, $pair);
        $value =~ tr/+/ /;
        $value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
        $FORM{$key} = $value;
    }
}
CGI(Perl)
Hello world ! ユーザーエージェント取得・表示($ENV{'HTTP_USER_AGENT'})
IPアドレス取得・表示($ENV{'REMOTE_ADDR'}) リンク元取得・表示($ENV{'HTTP_REFERER'})
URL取得・表示($ENV{'HTTP_HOST'}, $ENV{'REQUEST_URI'}) 環境変数を全て表示(%ENV)
ホスト名取得・表示(gethostbyaddr) 訪問者のプロバイダーを表示
訪問者の都道府県を取得・表示 日付を表示(localtime time)
日付を画像表示(localtime time, substr) アクセス日時を表示(localtime time)
指定の日までの日数を表示 曜日によって背景色を変える
日によって背景色を変える 月によって背景色を変える
見るたびに背景色を変える 見るたびに背景画像を変える
おみくじ(rand, int) カラーチャート
Shift_JIS文字コード表 UTF-8文字コード表
グラフ(横棒グラフ) アクセスカウンター
アクセスカウンター(画像) アクセスカウンター(今日・昨日)
訪問回数(クッキー, $ENV{'HTTP_COOKIE'}, Set-Cookie) アクセスログ保存
アクセスログ集計 パスワード認証
クッションページ($ENV{'QUERY_STRING'}) クッションページ($ENV{'PATH_INFO'})
フォーム入力内容をクッキーに保存 1つのCGIでフレームページを表示
IPアドレスからホスト名を取得(gethostbyaddr) ホスト名からIPアドレスを取得(gethostbyname)
IPアドレスからプロバイダーを取得 IPアドレスから都道府県を取得
文章中の文字列を別の文字列に一括変換 カレンダー
カレンダー(前月・次月へのリンク付) カレンダー(今年1月〜12月)
掲示板 掲示板(URL自動変換/連続改行・スペース削除)
掲示板(年齢・性別・都道府県選択) 画像アップロード掲示板
チャット Web日記
サイトマップ(ディレクトリ内のファイルを調べる) Webデータ取得(HTTPヘッダー, HTMLソース, use Socket)
Webデータ取得(HTTPヘッダー, HTMLソース, use HTTP::Request::Common) トラックバック受信
トラックバック送信 メール送信(メールフォーム, sendmail)
リバーシ(ボードゲーム) .htaccessユーザー認証用ユーザーファイル作成
リダイレクト 条件指定リダイレクト
言語振り分けリダイレクト 条件指定アクセス拒否(ステータスコードを返す)
HTMLファイル読み込み・表示 HTMLファイル読み込み・パスワード認証
HTMLファイル読み込み・条件指定アクセス拒否 HTMLファイル読み込み・条件指定リダイレクト
外部CGIファイル読み込み(require) 画像ファイル読み込み・表示
画像縮小・拡大・サイズ変更(Image::Magick, Resize) 画像切り出し(Image::Magick, Crop)
画像文字埋め込み(Image::Magick, Annotate) 画像合成(Image::Magick, Composite)
画像生成・保存(Image::Magick->new) 画像合成アクセスカウンター
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】