本サイト「(34)FLASHによるフォームメール(cgiのsendmail使用)」で、FLASHで未記入チェック、javascriptでemail書式チェック、cgiでsendmailする方法を掲載している。 また、「(54) フォームメールの作成」でas3.0のスクリプトでフォームメールを作成する方法を掲載している。 今回は、まだas2.0を使っている人が多いことも考え、また、(34)ではjavascriptまで使って複雑になっていることを考え、emailチェックもcgi
で行う方法について述べる。
cgiの内容は、「sendmail4flash13.txt」 をダウンロードして確認下さい(拡張子をcgi に変更すれば使えます)。
また、flashとcgi のやり取りの仕方、cgiの設定は、「FLASHとCGIとのやりとりの仕方」を参照のこと(ここのcgi は古いバージョンですから気をつけて下さい)。
<追加>
もっとシンプルに、確認画面なしで、1シーンで未記入チェック・email書式チェックと送信完了を済ませることのできるタイプを本稿後半に追加した。 |
サンプル画面は 別ウインドウで |
ステージの準備 ((34)FLASHによるフォームメール(cgiのsendmail使用)と同じ) |
スクリプト(Script) ((34)FLASHによるフォームメール(cgiのsendmail使用))と異なる箇所だけコメントする) |
シーン1_rootに
stop();
var item_num = 6;
_root.confirm_btn.onRelease = function() {
alertStr = "";
for (i=0; i<item_num; i++) {
jlabel = _root["jLabel"+i];
inbox = _root["inBox"+i];
jT = jlabel.text;
if (jT.substring(0, 1) == "E") {
$email = inbox.text;
}
mark = jT.substring(jT.length-2, jT.length);
if (mark == "**" && inbox.text == "") {
alertStr += jT.substring(0, jT.length-2)+" ";
}
}
if (alertStr == "") {
alertBox.text = " ";
nextScene();
} else {
alertBox.text = alertStr+"が未記入です";
}
}; |
未記入チェックが完了したらシーン2へ
(emailチェックはここでは行わない) |
シーン2_rootに
stop();
System.useCodepage = true;
$body = "";
for (i=0; i<item_num; i++) {
inData = _root["indat"+i];
outData = _root["outBox"+i];
outLabel = _root["jLabel"+i];
if (inData) {
outData.text = inData;
$body += outLabel.text+": "+outData.text+"\n";
}
}
_root.edit_btn.onRelease = function() {
prevScene();
};
$subject = "フォーム送信を受け付けました";
$body = "以下のデータを受信しました\n\n"+$body;
_root.submit_btn.onRelease = function() {
sdData = new LoadVars();
rvData = new LoadVars();
rvData.onLoad = function(success) {
if (rvData.msg == 'FINISHED') {
nextScene();
} else {
alertBox2.text = rvData.msg + " 前に戻って修正してください";
}
};
sdData.email=$email;//インプットされたクライアントのaddress
sdData.subject = $subject;//クライアントに返すメールの件名
sdData.body = $body;//クライアントに返すメール本文
sdData.mailto=$email;//通常はsendmail 宛先 address を入れる
sdData.subjectto = $subject;//sendmailに送るメールの件名
sdData.bodyto = $body;//sendmailに送るメールの主文
sdData.sendAndLoad("sendmail4flash13.cgi", rvData, "POST");
};
|
|
注) sendmail4flash13.cgi は書き込んだクライアントと、自分に別々のメールが届くようにしてある。(上のスクリプトは、クライアントに同内容で2通届くような設定である) したがって、相手先と自分に届くメールの件名、主文を別々に設定できる。 相手に送る主文は、例えば、
$body += "\n\nこのメールは自動返信されています。\nただちに担当がご返事いたします。"
などとする。最後に社名などを付記することも可能である。
また、自分への件名は $subjectto = "***************"; のように定義しておけばよい。 |
シーン3_rootに
_root.back_btn.onRelease = function() {
gotoAndPlay("Scene 1");
}; |
戻るボタンがクリックされたら
シーン1に |
追加
<シンプルタイプ> |
|
サンプル画面は 別ウインドウで |
|
スクリプト(Script):FRAME 1 に(シーンは一つだけ) |
|
System.useCodepage = true;
var input:Array = new Array();
var inputText:Array = new Array();
var itemStr = ["氏 名","email","メッセージ"];
for (var i:Number=1; i<4; i++) {
input[i] = this["input"+i];
with (input[i]) {
border=true;
borderColor = 0x999999;
background = true;
backgroundColor = 0xf5f5f5;
text = "";
}
}
submit_btn.onRelease = function() {
var alertStr:String = "";
var $body:String="";
alertBox.text = "";
for (var j:Number=1; j<4; j++) {
inputText[j] = input[j].text;
var $str:String = itemStr[j-1] + ": " + inputText[j] + "\n";
$body += $str;
}
if (inputText[2]=="") {
alertStr = " email";
}
if (inputText[3]=="") {
alertStr += " メッセージ";
}
if (alertStr == "") {
var $email:String = inputText[2];
sendMessage($email,$body);
} else {
alertBox.text = alertStr + "が未記入です";
}
}
//data送信
function sendMessage($email,$body) {
$subject = "フォーム送信を受け付けました";
$body = "以下のデータを受信しました\n\n"+$body;
sdData = new LoadVars();
rvData = new LoadVars();
rvData.onLoad = function(success) {
if (rvData.msg == 'FINISHED') {
alertBox.text = "送信が完了しました";
} else {
alertBox.text = rvData.msg;
}
};
sdData.email = $email;//インプットされたクライアントのaddress
sdData.subject = $subject;//クライアントに返すメールの件名
sdData.body = $body + "\n\nこのメールは自動返信されています。
\n返信までしばらくお待ち下さい";
sdData.mailto = "****@****.****";//sendmail宛先
sdData.subjectto = "フォーム送信を受け付けました";
sdData.bodyto = $body;//sendmailに送るメールの主文
sdData.sendAndLoad("sendmail4flash13.cgi",rvData,"POST");
} |
|
|
|
HOME お勉強総リスト |