[Perl]メールフォームCGIの作り方
オンラインショップの商品が注文された際に顧客に注文内容の確認メールを送信したり、掲示板にコメントが書き込まれた際に管理人宛てに通知メールを送信したりするには、フォームで入力された項目の内容をCGIからメールとして送信する必要が あります。
一般的なレンタルサーバーでCGIからメールを送信する場合の基本的な処理手順は次のようになります。
1.フォームから入力された各項目の値をパラメータから取得
2.subject(件名)をMIME-Base64形式に変換
3.メッセージを作成
4.メール送信する文字列の文字コードをJISに変換
5.sendmailを使用してメールを送信
下記のCGIスクリプト(UTF-8)はレンタルサーバー等で利用可能なsendmailを使用してフォームから入力された、Subject、宛先メールアドレス、差出人、本文を使用してメールを送信するサンプルプログラムです。
--- mailform.html (入力フォーム) ---
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <h1 class="title">メールフォーム</h1> <form method="post" action="sendmail.cgi"> <input type="hidden" name="a" value="exec"> 件名(Subject) :<br /> <input type="text" name="subject" size="80" value=""><br /> 宛先(To) :<br /> <input type="text" name="to" size="80" value=""><br /> 差出人(From) :<br /> <input type="text" name="from" size="80" value=""><br /> 本文(Body) :<br /> <textarea name="body" rows="10" cols="65"></textarea><br /> <p> <input type="submit" value="送信"> </p> </form> </body> </html>
--- sendmail.cgi (メール送信CGI) ---
#!/usr/bin/perl use strict; use warnings; use CGI; use Encode; my $cgi = CGI->new(); # パラメータからフォームの入力値を取得 my $subject = $cgi->param('subject'); my $to = $cgi->param('to'); my $from = $cgi->param('from'); my $body = $cgi->param('body'); # subject(件名)をMIME-Base64形式に変換 $subject = Encode::encode('MIME-Header-ISO_2022_JP', $subject); # メッセージを作成 my $message = <<"END_MESSAGE"; From: $from To: $to Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit $body END_MESSAGE # メール送信する文字列の文字コードをJISに変換 Encode::from_to($message, 'utf8', '7bit-jis'); # sendmailを使用してメールを送信 my $sendmail_path = '/usr/sbin/sendmail'; # sendmail path open my $mailh, "| $sendmail_path -t -oi $to"; print {$mailh} $message; close $mailh; # 送信終了を表示 my $html = <<"END_HTML"; <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>送信終了</title> </head> <body> <p><big>送信終了</strong></big></p> </body> </html> END_HTML print "Content-Type: text/html\n\n", $html;
なお、フォームからのパラメータの受け取りにはCGIモジュールを、メール本文の文字コードの変換やsubject(件名)のMIME-Base64形式への変換にはPerl 5.8以降では標準モジュールなっているEncodeモジュールを使用しています。
また、このサンプルでは、処理手順をわかりやすくするために、入力チェックなどの実際に運用する場合に必要な 処理を行ってませんが、入力チェック処理も含まれたより実用的なシンプルな メールフォームCGIの無料配布(ライセンスはGPL)も行っていますので、よろしければご活用ください。
[147] Posted by kagahiro at 2005/03/31 01:12:52
オープン | 0 point | Link (14) | Trackback (0) | Comment (0)
オープン | 0 point | Link (14) | Trackback (0) | Comment (0)
[Perl]メールフォームCGIの作り方 関連リンク
CGI | |
CGI(Common Gateway Interface)とは、Webサーバーがプログラムを起動する方法(環境変数の名前や値)を定めた仕様のことである。 |
CGIで利用できる環境変数を調べるには | |
CGIを実行するサーバーによっては固有の環境変数もあるので、まず自分のCGIを実行するサーバーでどんな環境変数が利用できるかを調べる... |
CGIから利用できるPerlモジュールを調べるには | |
Perlのモジュールを利用したCGIを使用するためには、CGIを実行するサーバーでどんなモジュールが利用できるかを調べて... |
Perl | |
Perlとは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語に似た表記法のスクリプトプログラミング言語... |
無料メールフォームCGIのダウンロード | |
Perlで書かれたメールフォームCGIをオープンソースライセンス(GPLv2)で公開しました。メールフォームCGIはWebページのフォームに入力された内容をメールで通知するスクリプトです。オープンソース... |
メールフォームCGI、Q&A CGI、ブックマークCGIのバージョンアップ | |
メールフォームCGI、Q&A CGI、ブックマークCGIをそれぞれバージョンアップしました。HTML::Templateを使用してUIの部分をできるだけプログラムから取り除き、テンプレートファイルで記述するよう... |
Sendmail(センドメール) | |
sendmail(センドメール)とは、Eric Allman氏によって開発された電子メールサーバソフトウェア(MTA)のことで、ユーザが送信したメールを受け取って、他のサーバと連携してバケツリレー式に目的地... |
sendmail [書籍] | |
sendmailシステム管理難解といわれるsendmailの設定・管理方法を初心者にもわかるように解説されている書籍。各種コマンドやオプションの意味、ルールセット、ユーザデータベースなどのトピックも... |
各種メールフォーム(入力フォーム)を格安で作成します | |
レンタルサーバーで運営するホームページに設置するお問い合わせフォームや会員登録フォーム、注文フォームなど、確認画面、確認メール送信機能を搭載した各種メールフォーム(CGI)を格安で... |
レンタルサーバー「heteml(ヘテムル)」にメールフォーム簡単設置機能 | |
paperboy&co.が提供している大容量・高機能レンタルサーバー「heteml(ヘテムル)」に、サイト訪問者からの感想やお問い合わせ、注文の受付など様々な用途に利用できるメールフォームを簡単に設置できる機能が導入され... |
メールフォーム(有料版)のサンプル | |
有料版メールフォーム(入力フォーム)の実際に動くサンプルを作成しました。お問い合わせフォームのサンプル会員登録フォームのサンプル注文フォームのサンプルメールフォーム... |
BlogMail | |
BlogMailは、ブログ訪問者からのメールを簡単に受け取れるように出来る無料のブログパーツ。シンプル版とブログパーツ版があり、ブログパーツ版は掲載用コードを設置するだけで使える。BlogMail フリーで使えるメール... |
PHPメールフォームのサンプルスクリプト | |
PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。mailmform.phpを実行すると入力フォームが表示され。送信ボタン... |
メールフォーム(mailform)とは | |
メールフォーム(mailform)とは、ウェブサイトに設置された入力フォームからユーザーが入力した情報を、サーバー側でPerlやPHPなどで記述されたプログラムで処理し電子メールとして送信するもので、ユーザーに入力し... |
[Perl]メールフォームCGIの作り方 トラックバック
トラックバックURL :
[Perl]メールフォームCGIの作り方へのコメント
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (8 PV)
- 無料掲示板CGIのダウンロード (4 PV)
- 使用制限無し完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (4 PV)
- 人気ナンピンマーチンEA「NPNM_v3」向けサンプルセットファイル (2 PV)
- マイクロブログ(microblog) (2 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」 オープンソースライセンス(GPL3) #ドル円 (2 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (2 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (1 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (1 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (1 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (807 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme(エクストリーム)」 MT4向け (689 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme MT5」 (543 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (210 PV)
- [PR]noteで販売している自作EAの一覧 (193 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (135 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (132 PV)
- 2NN 2ちゃんねるニュース速報+ナビ (96 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」 オープンソースライセンス(GPL3) #ドル円 (88 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 使用制限無し (84 PV)
アクセス統計
ディレクトリ
関連サイト