Easy-Micro

ESPACEMEMBRE ActionScript
Formulaires

Formulaires ActionScript

ActionScript Envoyer un mail
Un formulaire Flash consiste à envoyer un email depuis Flash.
Par défaut, le lecteur Flash n'a pas la capacité d'envoyer un email de manière autonome (sauf, peut-être avec la classe flash.net.Socket). Afin d'y parvenir, nous devons passer par un script serveur.

Pour tester cet exemple, il faut créer (dynamiquement ou pas) 3 zones de texte et un bouton sur la scène. Dans le cas d'une création manuel (via l'interface de Flash), ôter les 4 premieres lignes du code :
var destinataire:TextField;
var sujet:TextField;
var message:TextField;
var boutonEnvoi:SimpleButton;

boutonEnvoie.addEventListener(MouseEvent.CLICK, envoiMail);

function envoiMail(evt:Event):void {

// Affectation des variables à envoyer coté serveur
var destinataireEmail:String = destinataire.text;
var sujetEmail:String = sujet.text;
var messageEmail:String = message.text;

// Création de l'objet URLRequest
var requete:URLRequest = new URLRequest("http://localhost/mail/envoiMail.php?destinataire="+destinataireEmail+"&sujet="+sujetEmail+"&message="+messageEmail);

// 1ière technique d'envoi :
// Ouvre une nouvelle fenêtre du navigateur
navigateToURL(requete);

// 2ième technique d'envoi :
// Envoi les données de manière transparente (sans nouvelle fenêtre)

// Une variable pour l'envoie
var echanges:URLLoader;

echanges.load(requete);
}

Contenu du fichier envoiMail.php :
<?php
$destinataire = $_GET['destinataire'];
$sujet = $_GET['sujet'];
$message = $_GET['message'];

if ( isset($destinataire) && isset($sujet) && isset($message) ) {

echo $destinataire; // pour le test

// envoi du Mail
// le caractère @ devant la fonction mail évite que le serveur SMTP lève une exeption si bad config
if (@mail($destinataire, $sujet, $message)) { echo "Mail bien envoyé!"; }
else { echo "Mail pas parti!"; }

}
else { echo "Variables non transmises"; }
?>

Si les caractères ne s'affichent pas correctement, cela est du au fait que le lecteur Flash fonctionne en UTF-8, tandis que PHP fonctionne par défaut en ISO-8859-1. La fonction PHP utf8_decode devrait venir à bout de ce problème comme ceci :
echo utf8_decode($destinataire);

ActionScript Accusé de réception
Un accusé de réception de l'envoi de message demande dans le fichier PHP, un echo "resultat = 1" dans le if de tout va bien et un echo "resultat = 0" dans ceui ou tout va mal.

Dans le code Action script, on rajoute :
var echanges:URLLoader;

echanges.dataformat = URLLoaderDataFormat.VARIABLES;

echanges.adEventListener(Event.COMPLETE, retourServeur);

function retourServeur(evt:Event):void {
sujet.text = destinataire.text = message.text = "";

var messageRetour:String;

if(Number(evt.target.data.resultat) == 1) { meassageRetour = "Mail bien envoyé !"; }
else { meassageRetour = "Mail pas envoyé."; }
message.text = messageRetour; // on rempli le champ message
}


< Page précédente ACTIONSCRIPT Page suivante >