※このサンプルの解説は、「CGI(Perl)の解説」をすべて読み終えてる方を前提としています。
■ メール送信のテスト
今回はCGI(Perl)でメール送信のテストCGIを作成してみましょう。
このCGIもちょっと難しいところがあります。
まず、メール送信をするためにはサーバーが「sendmail」の利用を許可していないとダメです。
※「sendmail」とはメール送信を行うサーバープログラムです。
「sendmail」が許可されている場合は、そのサイトの「CGIの設定の解説ページ」にその呼び出し方法が記述されています。
わからない場合はサーバー管理者に問い合わせしてみてください。
なお、このメール送信をマスターしても、サーバーで大量メールの送信をしたり、サーバーに負担を掛けるとアカウント抹消されたり、プロバイダから解約されたりすることがありますのでくれぐれもご注意下さい。
Windowsは通常そのパソコンには「sendmail」などの「メール送信ソフト」は入ってないのでテストはできません。
※このサイトの「HP作成関連ソフト」では、ローカルで「sendmail」が使えるようになるフリーソフトなども紹介していますので参考にして下さい。
- 【 解 説 】
-
まず、あなたのサーバーがメール送信を許可している場合、「sendmail」の呼び出し方法が記述されてますので、それを「$mailpr」という変数にセットしておきます。
$mail = "/usr/local/bin/sendmail";この場合、「/usr/local/bin/sendmail」が「sendmail」の呼び出し方法です。
次に、メール送信に最低限必要な情報は、「送信者のメールアドレス」、「受信者のメールアドレス」、「タイトル」、「本文」 です。
今回は上記に加え、「送信者名」、「受信者名」も使ってみます。まずは「送信者名」、「送信者のメールアドレス」、「受信者名」、「受信者のメールアドレス」を変数に設定しておきましょう。
$frname = "atom"; $fradrs = "aaa\@ccc.ddd"; $toname = "atom"; $toadrs = "bbb\@ccc.ddd";次に、これらと「タイトル」を後で利用するため、次のように「$mhead」という変数にセットしておきます。
$mhead = "From: $frname <$fradrs>\n"; $mhead .= "To: $toname <$toadrs>\n"; $mhead .= "Subject: Test mail\n"; $mhead .= "\n";タイトルに日本語(全角)を使用したい場合はコード変換が必要となるため、今回は半角で「Test mail」としました。
日本語(全角)を利用する場合のコード変換については別の機会に解説します。本文も同様に、「$mbody」という変数にセットしておきます。
$mbody = "こんにちは。\n"; $mbody .= "お元気でしょうか\n";そして、上記の記述を使ってメール送信する場合はファイルオープンを使って、次のように記述します。
open MP, "| $mailpr -f $fradrs -t $toadrs"; print MP "$mhead$mbody"; close MP;
では、上記の内容を使用して「メール送信」を作成してみます。
処理結果が表示された方が解かりやすいので最後に送信内容の表示を追記しています。
- 【記述サンプル】
- #!/usr/bin/perl $mailpr = "/usr/sbin/sendmail"; $frname = "atom"; $fradrs = "aaa\@ccc.ddd"; $toname = "atom"; $toadrs = "bbb\@ccc.ddd"; $mhead = "From: $frname <$fradrs>\n"; $mhead .= "To: $toname <$toadrs>\n"; $mhead .= "Subject: Test mail\n"; $mhead .= "\n"; $mbody = "こんにちは。\n"; $mbody .= "お元気でしょうか\n"; open MP, "| $mailpr -f $fradrs -t $toadrs"; print MP "$mhead$mbody"; close MP; print "送信完了!<br><br>\n"; print "<pre>$mhead</pre>\n"; print "<pre>$mbody</pre>\n";