на Action Script 1.0 - 2.0, делал так (упрощю для наглядности, вообще можно понакрутить разной всячины):
1. создаём слой (form), на нём рисуем поля для заполнения:
a) (вводимый текст) name_txt - тут будет имя
b) (вводимый текст) email_txt - мыло для обратной связи
с) (вводимый текст) message_txt - ну понятно, текст сообщения
d) (динамический текст) erroLog - тут будут высвечиваться сообщения об ошибках
2. делаем кнопку, на неё пишем:

Код AS1/AS2:
on (release) {
// отправляемся нажатием кнопки на проверку заполнения форм
validateForm();
}
3. создаём новый слой (script_validate), в первом кадре пишем:

Код AS1/AS2:
//стопорим кадр (чтобы голова не закружилась)
stop();
errors = new Array();
//на всякий пожарный очищаем формы
function clearForm() {
name_txt.text = "";
email_txt.text = "";
message_txt.text = "";
errorLog.text = "";
errors.length = 0;
}
//проверка заполнения поля name_txt
function validateFame() {
if (name_txt.text.length < 2 || isNaN(name_txt.text) == false) {
errors.push("Вы не ввели имя");
}
}
//проверка заполнения поля email_txt
function validateFame() {
if (email_txt.text.length < 2 || isNaN(email_txt.text) == false) {
errors.push("Вы не ввели адрес эл.почты");
}
}
//проверка заполнения поля message_txt
function validateFame() {
if (message_txt.text.length < 2 || isNaN(message_txt.text) == false) {
errors.push("Вы не ввели текст сообщения");
}
}
//собственно сам скрипт проверки заполнения текстовых полей
function validateForm() {
errorLog.text = "";
errors.length = 0;
validateName();
validateEmail();
validateMessage()
if (errors.length > 0) {
var i = -1;
while (++i < errors.length) {
errorLog.text += errors[i] + newline;
}
} else {
//если все хорошо, отсылаем данные дальше, второй частью отсылаем мувик на сцену 2 - где стопим и выдаём сообщение - отправлено!
F_sendMail(name_txt.text,email_txt.text,message_txt.text ); gotoAndPlay("Scene 2", 1);
}
}
4. делаем новый слой (script_send), в первом кадре пишем (почему в разных слоях? - мне так проще, хотите объединяйте):

Код AS1/AS2:
//Функция отправки сообщения
F_sendMail = function (Name, Email, Message) {
// Создаём мувик для хранения переменных
_root.createEmptyMovieClip("v", 120);
v.name = Name;
v.email = Email;
v.message = Message;
// Отправляем данный php - скрипту - адрес сайта где лежит PHP и название файла! адрес лучше указывать полный! о то бывает и не срабывает :(
v.loadVariables("http://www.yoursite.com/mail.php", "POST");
};
// Что бы не было проблем с кодировкой при передачи текста php
System.useCodepage = true;
5. делаем PHP (называем - понятно: mail.php) (укладываем - понятно:
http://www.yousite.com):

PHP код:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
//создаём собственно сообщение, адрес электронки куда оно придёт и далее текст сообщения (можно конечно всё это украсить)
mail("youraddres@yoursite.com","Сообщение с сайта","Имя : $fame\n Эл.адрес: $name\n Сообщение : $message");
?>
6. создаём сцену 2 - там делаем полностью идентичный мувик (нашему мувику с формами) но пишем большими буквами "отправлено", собственно на кнопку вешаем (лучше сделать кнопку, вдруг человечек захочет ещё чего отослать):

Код AS1/AS2:
on (release) {
gotoAndPlay("Scene 1", 1);
}
7. закидываем PHP и SWF на сайт или локалхост (не забываем править пути и имена, если на локалхосте то инет должен быть на машине) SWF вешаем на страницу и пробуем (вообще если всё сделали как надо работать будет 100% - сам такой пользуюсь на сайтах), при желании и усилиях, ну и знаниях соответственно можно усложнить и разукрасить как вам будет угодно.
P.S. есть одна во всём этом проблема - на хосте может стоять запрет на отслыку почты через (скрипты и формы), на большинстве хостов с этим проблем нет, но встречается и фигня, несколько часов бился (не отпраялет письмо хоть ты тресни) - позвонил в службу тех.поддержки хостинга и задал вопрос в лоб - что надо сделать и где чего у них включить и приписать, объяснили - РАБОТАЕТ