I stripped the one from here http://www.flepstudio.org/forum/flepstudio-utilities/2265-email-form-pictures-flash-cs3-php.html, which was a bit heavy for my needs…
[AS]package {
import flash.display.Sprite;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.AntiAliasType;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.net.URLVariables;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequestMethod;
import flash.events.IEventDispatcher;
import flash.utils.Timer;
public class ContactForm extends Sprite {
private var txtName:TextField = new TextField ();
private var txtMessage:TextField = new TextField ();
private var txtEmail:TextField = new TextField ();
private var txtSend:TextField = new TextField ();
private var inputName:TextField = new TextField ();
private var inputMessage:TextField = new TextField ();
private var inputEmail:TextField = new TextField ();
private var txtInfo:TextField = new TextField ();
private var format:TextFormat = new TextFormat ();
private var iformat:TextFormat = new TextFormat ();
private var sformat:TextFormat = new TextFormat ();
private var submitBtn:Sprite = new Sprite();
private var sendMailURL:URLRequest=new URLRequest("sendMail.php");
private var _name:String="";
private var _message:String="";
private var _email:String="";
private var timer:Timer;
public var uploadURL:URLRequest;
public const absoluteURL:String="";
public function ContactForm ()
{
addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);
format.size = 12;
format.font = 'Arial';
format.color = 0x333333;
format.align = 'left';
iformat.size = 12;
iformat.font = 'Arial';
iformat.color = 0xFF0000;
iformat.align = 'left';
sformat.size = 12;
sformat.font = 'Arial';
sformat.color = 0xFFFFFF;
sformat.align = 'left';
createTexts();
}
private function createTexts ():void
{
txtInfo.defaultTextFormat = iformat;
txtInfo.antiAliasType = AntiAliasType.ADVANCED;
txtInfo.autoSize = TextFieldAutoSize.LEFT;
txtInfo.wordWrap = true;
txtInfo.multiline = true;
txtInfo.selectable = false;
txtInfo.text = "";
txtInfo.x = 10;
txtInfo.y = 10;
txtInfo.width = 400;
addChild(txtInfo);
txtName.defaultTextFormat = format;
txtName.antiAliasType = AntiAliasType.ADVANCED;
txtName.autoSize = TextFieldAutoSize.LEFT;
txtName.wordWrap = true;
txtName.multiline = true;
txtName.selectable = false;
txtName.text = "NAME";
txtName.x = 10;
txtName.y = txtInfo.y + txtInfo.height + 30;
addChild(txtName);
inputName.defaultTextFormat = format;
inputName.text ="";
inputName.width =200;
inputName.height = 20;
inputName.x = txtName.x + txtName.width + 10;
inputName.y = txtName.y;
inputName.border = true;
inputName.type = TextFieldType.INPUT;
addChild(inputName);
txtEmail.defaultTextFormat = format;
txtEmail.antiAliasType = AntiAliasType.ADVANCED;
txtEmail.autoSize = TextFieldAutoSize.LEFT;
txtEmail.wordWrap = true;
txtEmail.multiline = true;
txtEmail.selectable = false;
txtEmail.text = "EMAIL";
txtEmail.x = 10;
txtEmail.y = txtName.y + txtName.height + 10;
addChild(txtEmail);
inputEmail.defaultTextFormat = format;
inputEmail.text ="";
inputEmail.width =200;
inputEmail.height = 20;
inputEmail.x = txtEmail.x + txtEmail.width + 10;
inputEmail.y = txtEmail.y;
inputEmail.border = true;
inputEmail.type = TextFieldType.INPUT;
addChild(inputEmail);
txtMessage.defaultTextFormat = format;
txtMessage.antiAliasType = AntiAliasType.ADVANCED;
txtMessage.autoSize = TextFieldAutoSize.LEFT;
txtMessage.wordWrap = true;
txtMessage.multiline = true;
txtMessage.selectable = false;
txtMessage.text = "MESSAGE";
txtMessage.x = 10;
txtMessage.y = txtEmail.y + txtEmail.height + 20;
addChild(txtMessage);
inputMessage.defaultTextFormat = format;
inputMessage.text ="";
inputMessage.width =200;
inputMessage.height = 150;
inputMessage.x = txtMessage.x + txtMessage.width + 10;
inputMessage.y = txtMessage.y;
inputMessage.border = true;
inputMessage.type = TextFieldType.INPUT;
inputMessage.multiline = true;
inputMessage.wordWrap = true
addChild(inputMessage);
submitBtn.graphics.beginFill (0x333333);
submitBtn.graphics.drawRect (txtMessage.x + txtMessage.width + 10, inputMessage.y + inputMessage.height + 20,100, 25);
submitBtn.graphics.endFill ();
submitBtn.buttonMode = true;
submitBtn.useHandCursor = true;
submitBtn.mouseChildren = false;
submitBtn.addEventListener(MouseEvent.MOUSE_DOWN, buttonHandler);
addChild(submitBtn);
txtSend.defaultTextFormat = sformat;
txtSend.antiAliasType = AntiAliasType.ADVANCED;
txtSend.autoSize = TextFieldAutoSize.LEFT;
txtSend.wordWrap = true;
txtSend.multiline = true;
txtSend.selectable = false;
txtSend.text = "SEND";
txtSend.x = txtMessage.x + txtMessage.width + 40;
txtSend.y = inputMessage.y + inputMessage.height + 23;
submitBtn.addChild(txtSend);
}
private function buttonHandler(event:MouseEvent):void
{
startSubmitSequence();
}
private function startSubmitSequence():void
{
// assign inputted text
_name = inputName.text;
_message = inputMessage.text
_email = inputEmail.text
if(checkRequiredFields()) // Check if all the required fields have text
if (isValidEmail(_email)) // Check if the Email entered is a valid one
sendMessage();
else
txtInfo.text = "NOT A VALID EMAIL ADDRESS";
else
txtInfo.text = "ALL FIELDS ARE REQUIRED";
}
private function isValidEmail(email:String):Boolean
{
var emailExpression:RegExp = /^[a-z][\w.-]+@\w[\w.-]+\.[\w.-]*[a-z][a-z]$/i;
return emailExpression.test(email);
}
private function checkRequiredFields():Boolean
{
if(_name!="" && _message!="" && _email!="")
return true;
else
return false;
}
private function sendMessage():void
{
var variables:URLVariables=new URLVariables();
variables.abs_url=absoluteURL;
variables.name = _name;
variables.message = _message;
variables.email = _email;
sendMailURL.method=URLRequestMethod.POST;
sendMailURL.data=variables;
var loader:URLLoader=new URLLoader();
loader.dataFormat=URLLoaderDataFormat.VARIABLES;
addListeners(loader);
try
{
txtInfo.text = "SENDING..."
loader.load(sendMailURL);
}
catch (error:Error)
{
txtInfo.text ="AN ERROR HAS OCCURRED PLEASE TRY AGAIN";
}
}
private function addListeners(d:IEventDispatcher):void
{
d.addEventListener(Event.COMPLETE,messageSent);
}
private function messageSent(event:Event):void
{
txtInfo.text = "THANKS, YOUR MESSAGE HAS BEEN SENT";
var loader:URLLoader=URLLoader(event.target);
var vars:URLVariables=new URLVariables(loader.data);
if(vars.answer=="ok")
{
timer=new Timer(4000,1);
timer.addEventListener(TimerEvent.TIMER,resetAll);
timer.start();
}
else
{
txtInfo.text = "AN ERROR HAS OCCURRED PLEASE TRY AGAIN";
}
}
private function resetAll(event:TimerEvent):void
{
timer.removeEventListener(TimerEvent.TIMER,resetAll);
txtInfo.text = "";
inputName.text ="";
inputEmail.text ="";
inputMessage.text ="";
}
}
}[/AS]
and the sendMail.php file, in this example saved in the same folder as the flash file
<?php
$sendTo = "example@email.com";
$subject = "E-mail from my web site";
$headers = "From: " . $_POST["name"] ."<" . $_POST["email"] .">
";
$message = "";
$message .= "Name: ";
$message .= "
";
$message .= $_POST["name"];
$message .= "
";
$message .= "From: ";
$message .= "
";
$message .= $_POST["email"];
$message .= "
";
$message .= "
";
$message .= "Message: ";
$message .= "
";
$message .= $_POST["message"];
$message .= "
";
if(@mail($sendTo, $subject, $message, $headers))
{
$answer='ok';
echo "answer=".$answer;
}
else
{
$answer='error';
echo "answer=".$answer;
}
?>
Example: contactform example