1.内容
PHPと連携させて,Flashからメールを送信できるメールフォームを作ってみます.簡単なアンケートなどを自分のHP上で取ったりする場合に役立つかもしれません.
あと,自由に使ってもらってOKです.ただし,このサンプルで発生した問題等について,AqS.は一切責任をおいません.ご注意を.
2.必要なもの
この内容を進めるには,「FlashMX2004」以上とPHP&PHPのメール関数が利用可能なサーバが必要です.また,このサンプルではaki-webさんで配布されている「メール送信(関数)」を利用します.
- Flash・・・AdobeのダウンロードサイトからFlash8体験版をダウンロード _
- メール送信(関数)・・・既存のメール送信関数を利用します _
- PHPサーバ・・・自分でサーバを立てるかレンタルサーバを用意
- flash_mailformサンプル・・・ラフな状態ですが動作します.要解読&改造 _
#なお,サンプルのasファイル内容が,下記に示した内容と若干異なっていますが問題ありません.
3.Flashプログラミング
メール送信スクリプトを利用する上で必要となる情報は,下記の4つです.
- 送信元メールアドレス
- 送信先メールアドレス
- 件名
- 本文
送信先メールアドレスはPHPスクリプト内で記述すればよいので,Flash側で必要となる作業は,「送信元メールアドレス」「件名」「本文」の取得とPHPへの送信です.
では,送信フォームを作ります.
これをもとに,ActionScriptを記述していきます.
さて,今回はPHPに変数を送信するために「LoadVarsクラス」を使います.理由は,PHPスクリプトによって正しくメールが送信されたかどうかの結果を受け取る必要があるためです.getURLメソッド等を使うこともできますが,PHPなどから戻り値があった場合にそれをブラウザで受け取ることしかできません.FlashPlayerで結果を受け取るためには,LoadVarクラスを用いたほうが便利といえます.
では,フレームアクションとして次のコードを入力しLoadVarsオブジェクトを生成します.
var tmp_lv:LoadVars = new LoadVars();
つづいて,PHPに送信する変数を定義します.シンタックスは下記のように,「LoadVarオブジェクト名.変数名」という形です.
tmp_lv.var_name="";
tmp_lv.var_email="";
tmp_lv.var_mes="";
これで,メール送信用のPHPへ送る変数の用意ができました.
PHPへ送信するコードを記述します.PHPスクリプトへ送信した後PHPからの戻り値を得る必要があるので「sendAndLoadメソッド」を使います.下記のコードを送信ボタンなどのonPressイベントハンドラにを記述します.
tmp_lv.sendAndLoad("http://xxx.xxx.org/php/mail/mailsample.php",tmp_lv,"GET");
最後に,送信結果を受け取って表示するスクリプトを記述します.
//PHPからの戻り値チェック
tmp_lv.onData=function(str){
if(str){
trace("SEND");
var_ret="送信しました";
}
else
{
trace("MISS");
.var_ret="送信に失敗しました";
}
}
4.PHPプログラミング
PHPスクリプトにはサンプルが用意されているので,それを改造します.
メール送信(関数)のシンタックスは,
$Kekka = MailSender($MailFrom, $MailTo, $Subject, $Message);
となっているので,これにあわせて各変数の内容を設定します.まず,メール送信元の変数「$MailFrom」を設定します.先のFlashプログラミングで,メール送信元のアドレスを保存する変数名は「var_email」とし,変数をGETで送信する設定にました.なので,その値をPHPで受け取るためのスクリプトは「$_GET['var_email']」となり,下記のように記述できます.
$MailFrom = $_GET['var_email'];
続いて,メール送信先の変数「$MailTo」を設定します.この変数の値は,自分の持っているアドレスを設定すればよいので,「mail@xxx.xxx.org」というアドレスでメールを受けたいのであれば,
$MailTo = "mail@xxx.xxx.org";
と記述すれば完了です.
同様に,メール件名の変数「$Subject」を設定します.この値は,Flashから変数を受け取って設定してもよいですし,PHPスクリプト内で設定してもよいです.今回は,スクリプト内で記述して,さらにFlashから受け取った変数も反映させます.
$Subject = "感想メール:"+$_GET['var_name'];
最後に,メール内容の変数「$Message」を設定します.このサンプルでは,Flash内から変数を受け取って反映するようになっているので,下記のようになります.
$Message = $_GET['var_mes'];
全ての変数の設定を終えたら,「MailSender」メソッドを実行します.すると,その結果がTrueまたはFalseで返ってくるので,それをFlashに送信するように記述します.
if($Kekka == True) {
echo "true";
exit;
} else {
echo "false";
exit;
}
このコードは,MailSenderメソッドの結果がTrue(送信できた)の場合は,ブラウザに「true」を表示し,False(送信できなかった)の場合は「false」を表示するようになっています.この表示を受けて,Flash側で結果を表示するようになっています.
[ b a c k ]