[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)も行っていますので、よろしければご活用ください。

[2178] Posted by kagahiro at 2010/08/05 14:39:39
オープン | 1 point | Link (7) | Trackback (0) | Comment (1)

キーワード
メールフォーム CGI Perl sendmail サンプルプログラム レンタルサーバー 

語句検索のホームページ


[Perl]メールフォームCGIのサンプルプログラム 関連リンク

Perl(パール)
Perl(パール)とは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語に似た表記法のスクリプトプログラミング言語で、テキスト処理に優れていることから、CGIとしてWebアプリケ...
PHPメールフォームのサンプルスクリプト
PHPの開発環境でプログラムからメールを送信できるかチェックするために作成した、ごく簡単なメールフォームのサンプルスクリプト(プログラム)です。mailmform.phpを実行すると入力フォームが表示され。送信ボタン...
無料(オープンソース)のメールフォームCGI「Mailform Std 1.0」
オープンソースの無料メールフォームCGI「Mailform Std 1.0」を公開しました。中身は以前公開していた無料メールフォームCGIに少し機能を追加したもので、機能的には今のところシンプルな「問い合わせフォーム」です...
掲示板やチャットなどのフリーPHPスクリプトの配布サイト
掲示板やチャットなどのフリーPHPスクリプトを配布しているサイトやPHPを使った掲示板の作り方を解説しているサイト。php365.com - PHPスクリプト配布サイト -掲示板や自動リンク集、メールフォームなど。P-Web掲示板...
「ハッスルサーバー」月額208円でPHP、MySQLが使える格安レンタルサーバー
ネットエイドの格安レンタルサーバー「ハッスルサーバー」は、月額208円と格安料金ながら、容量1.5Gで、perl、ruby、pythonのCGIだけでなく、PHPやMySQL、定期的に処理を自動的実行するcronも利用できます。また、人...
XAMPP(エグザンプ)とは
XAMPP(エグザンプ)とは、Linux、Windows、Mac OS X、SolarisにApache、MySQL、PHP、Perlを一括してインストールできる無償のディストリビューションで、非営利組織プロジェクトApache Friendsが開発、配布している...
PHPでMySQLに接続して、SELECTでデータを取得するサンプルプログラム
PHPのプログラムからMySQLに接続し、SELECTでデータを取得する処理のサンプルプログラムです。あらかじめPHPMyAdminを使用してMySQLにテータベース「testdb」を作成し、以下のSQLを実行しテーブル「users」を作成、3...

[Perl]メールフォームCGIのサンプルプログラム トラックバック

トラックバックURL :


[Perl]メールフォームCGIのサンプルプログラムへのコメント

1 Posted by 大宮健治 at 2015/07/02 22:27:37
あああああああああ
いいいいいいいいい

詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前のスレッド      次のスレッド >

アクセスランキング

今日のアクセスランキング(上位10件)

  1. 日銀追加緩和決定で円安ドル高が加速、ドル円は111円台に (9 PV)
  2. 2chみたいな掲示板「PHP 2chBBS」 (9 PV)
  3. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (7 PV)
  4. 「暴力と麻薬に汚染された芸能界」を告発する梨元勝の「遺言状」 (6 PV)
  5. “フクイチ”で新たな恐怖! 海外の研究者や政府関係者が不安視、苛立つ最悪の「地底臨界」危機進行中? (6 PV)
  6. 徳洲会から5000万円の資金提供を受けていた猪瀬直樹東京都知事、政治資金収支報告書虚偽記載の疑い (5 PV)
  7. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (4 PV)
  8. PHP、MySQLで動くオープンソース掲示板ソフト (3 PV)
  9. 横綱・日馬富士が幕内力士の貴ノ岩をビール瓶で殴って重傷を負わせていたことが発覚 (2 PV)
  10. 行方不明、家出、人探し掲示板 (2 PV)

今月のアクセスランキング(上位10件)

  1. ログ速(ろぐそく、logsoku) - 過去ログ スレタイ検索 全文検索 (718 PV)
  2. 2ちゃんねる(2ch)検索 掲示板 - スレタイ、過去ログ、全文検索 (657 PV)
  3. “フクイチ”で新たな恐怖! 海外の研究者や政府関係者が不安視、苛立つ最悪の「地底臨界」危機進行中? (478 PV)
  4. 日銀追加緩和決定で円安ドル高が加速、ドル円は111円台に (439 PV)
  5. 徳洲会から5000万円の資金提供を受けていた猪瀬直樹東京都知事、政治資金収支報告書虚偽記載の疑い (398 PV)
  6. 行方不明、家出、人探し掲示板 (286 PV)
  7. PHP、MySQLで動くオープンソース掲示板ソフト (206 PV)
  8. プリンセスガーデンホテル女性社長の「片岡都美」氏はフジモリ元大統領夫人 (142 PV)
  9. 「暴力と麻薬に汚染された芸能界」を告発する梨元勝の「遺言状」 (133 PV)
  10. 5ちゃんねる(5ch.net、旧2ちゃんねる)掲示板 (110 PV)

アクセス統計

ディレクトリ

関連サイト