Siete qui:

  1. Home
  2. Blog
  3. HTTPService e php per inviare mail via Flex

HTTPService e php per inviare mail via Flex

Alessandro Scoscia • 29 dicembre 2007 11:33

L'introduzione in actioscript 3 dei binary socket consente l'implementazione di qualunque protocollo di comunicazione direttamente in applicazioni flash e flex. Ovviamente non ha senso pensare di implementare l'intero protocollo SMTP al solo fine di realizzare un mail-form.

Un modo più semplice e veloce di realizzare un mail-form in flex è quello di delegare le operazioni di invio mail ad uno script esterno (in questo caso realizzato in php). L'applicazione flex ha quindi il compito di gestire l'interazione con l'utente per la compilazione del form e di richiedere l'invio della mail allo script php.

Per realizzare interazioni con pagine dinamiche si può usare il componente HTTPService che gestisce comunicazioni di tipo richiesta/risposta e permette lo scambio di parametri sia in GET che in POST. La comunicazione con script esterni è soggetta alle restrizioni di sicurezza tipiche delle applicazioni flash e se l'applicazione flex e lo script php non risiedono sullo stesso dominio occorre definire opportune policy per la gestione dello scambio di dati cross-domain.

Il componente HTTPService di flex consente realizzare lo scambio dei parametri con lo script esterno e di gestirne la risposta:

  1. <mx:HTTPService id="emailService" url= "http://www.alessandroscoscia.it/demo/Flex2/simpleEmailForm/php/email.php" method="POST" resultFormat="xml" result="emailResult()" fault="emailFault(event)" useProxy="false"/>

La chiamata del metodo send del componente HTTPService inizia la transazione. La sintassi sintetica per indicare i parametri da passare allo script permette di generare "al volo" un oggetto direttamente nella richesta di esecuzione:

  1. emailService.send({senderName: senderName, senderEmail:senderEmail, sendToName: sendToName, sendToEmail: sendToEmail, emailMessage: emailMessage, subjectMessage: subjectMessage});

La definizione delle proprietà result e fault di emailservice esegue il codice necessario ad impostare le funzioni emailResult o emailFault come gestori dei relativi eventi senza definire manualmente listener.

  1. public function emailResult():void
  2. {
    1. Alert.show("Messaggio inviato correttamente");
    2. this.submitBtn.enabled = false;
  3. }
  4.       
  5. public function emailFault(event:FaultEvent):void
  6. {
    1. Alert.show(event.fault.message, "Messaggio non inviato");
  7. }

Lo script php non ha altro compito che utilizzare i parametri in ingresso ed inviare una mail. Ovviamente nel caso di utilizzo reale è necessario implementare tutti gli abituali controlli di sicurezza sia per la verifica della correttezza dei parametri in ingresso sia per evitare che il sistema possa essere utilizzato per realizzare spam.

  1. <?php
    1. $senderName = $_POST['senderName'];
    2. $senderEmail =  $_POST['senderEmail'];
    3. $sendToName = $_POST['sendToName'];
    4. $sendToEmail = $_POST['sendToEmail'];
    5. $emailMessage = $_POST['emailMessage'];
    6. $subjectMessage = StripSlashes($_POST['subjectMessage']);
    7. $recipient = "$sendToEmail";
    8. $headers = "From: $senderEmail ";
    9. $message = "From: $senderName\nEmail Address: $senderEmail\nTo: $sendToName\nEmail Address: $sendToEmail\n\nMessage: $emailMessage";
    10. $message. = StripSlashes($message);
    11. mail($recipient, $subjectMessage, $message, $headers)
  2. ?>

Il codice sorgente completo dell'esempio è disponibile qui.

E' possibile visualizzare il form flex qui.

Commenti

Non ci sono commenti

Inserisci un commento

I campi contrassegnati con " * " sono obbligatori




Creative Commons License Valid XHTML 1.1 Valid CSS [Valid RSS] Powered by SmartControl