Search code examples
phpactionscript-3airanimate-cc

ActionScripts 3 to PHP email send


I found a tutorial for send email using actionscripts 3 and php, i downloaded project files and copied mail.php to our VPS server xamp htdocs folder. Animate CC project run but nothing sent.

AS3:

submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
function sendMessage(e:MouseEvent):void
{
    var my_vars:URLVariables = new URLVariables();
    my_vars.senderName = name_txt.text;
    my_vars.senderEmail = email_txt.text;
    my_vars.senderMsg = message_txt.text;

    var my_url:URLRequest = new URLRequest("http://my-domain.com/mail.php");
    my_url.method = URLRequestMethod.POST;
    my_url.data = my_vars;

    var my_loader:URLLoader = new URLLoader();
    my_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    my_loader.load(my_url);

    name_txt.text = "";
    email_txt.text = "";
    message_txt.text = "Message Sent";
} 

PHP:

<?php
$to = "[email protected]"; //Changed to my gmail
$subject = ($_POST['senderName']);
$message = ($_POST['senderMsg']);
$message .= "\n\n---------------------------\n";
$message .= "E-mail Sent From: " . $_POST['senderName'] . " <" . $_POST['senderEmail']  . ">\n";
$headers = "From: " . $_POST['senderName'] . " <" . $_POST['senderEmail'] . ">\n";
if(@mail($to, $subject, $message, $headers))
{
    echo "EMAIL SENT";
} 
else 
{
    echo "EMAIL NOT SENT";
}
?>

Animate CC Output:

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs. at Error$/throwError() at flash.net::URLVariables/decode() at flash.net::URLVariables() at flash.net::URLLoader/onComplete()

PHP Output:

Notice: Undefined index: senderName in /opt/lampp/htdocs/mail.php on line 3 Notice: Undefined index: senderMsg in /opt/lampp/htdocs/mail.php on line 4 Notice: Undefined index: senderName in /opt/lampp/htdocs/mail.php on line 6 Notice: Undefined index: senderEmail in /opt/lampp/htdocs/mail.php on line 6 Notice: Undefined index: senderName in /opt/lampp/htdocs/mail.php on line 7 Notice: Undefined index: senderEmail in /opt/lampp/htdocs/mail.php on line 7

EMAIL NOT SENT


Solution

  • I have done this, it works great! IN FLASH Actionscript 3 define:

    function f_sendMail() {
        var loader: URLLoader = new URLLoader;
        loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    
        var urlreq: URLRequest = new URLRequest("mysqlphp.php");
        urlreq.method = URLRequestMethod.POST;
        var urlvars: URLVariables = new URLVariables;
        //data to be sent to php
        //xdato1= name receibed php
        //wdato1= name in flash
        urlvars.xdato1 = wdato1;
        urlvars.xdato2 = wdato2;
        urlreq.data = urlvars;
    
        loader.addEventListener(Event.COMPLETE, f_completed);
        loader.addEventListener(IOErrorEvent.IO_ERROR, f_errorHandler);
        loader.addEventListener(IOErrorEvent.NETWORK_ERROR, f_errorHandler);
        loader.addEventListener(IOErrorEvent.VERIFY_ERROR, f_errorHandler);
        loader.addEventListener(IOErrorEvent.DISK_ERROR, f_errorHandler);
        try {
            loader.load(urlreq);
        } catch (error: Error) {
            sonidomal();
            errortxt.text = "A Error has occurred in send mail: " + error;
        }   
        function f_errorHandler(e: IOErrorEvent): void {
            errortxt.text = "errorHandler error=" + e.text;
        }   
        function f_completed(event: Event): void {
            if ((event.target.data.done == null) ||
               (event.target.data.done ==     undefined)) {
                errortxt.text = "Undefined";
            } else {
                if ((event.target.data.done.indexOf("Error") > -1) ||
                   (event.target.data.done.indexOf("error") > -1)) {
                    errortxt.text = event.target.data.done;
                } else {
                    var textophp: String = event.target.data.done;
                    //if you want to send data from php to flash
                    //remember is by one string using echo
                    //you have to separate it maybe ","
                    trace ("mail ok");
                }
            }
        }
    }
    
    //----------------------------------------------
    //In php
    //receibe from flash
    $flashdato1     =   $_POST['xdato1']; 
    $flashdato2     =   $_POST['xdato2']; 
    //do query to data base using $flashdato1 and $flashdato2 
    //the result of query is in $rsSearchResults
    if ($rsSearchResults){
        $rows = mysql_numrows($rsSearchResults);
        //put the information into $out 
        $body_content=$out; 
        //file name
        $file_name="datos/contestadop.csv"; 
        // Open the file in write mode, if file does not exist
        // then it will be created.
        $fp = fopen ($file_name, "w");
        // entering data to the file
        fwrite ($fp,$body_content); 
        fclose ($fp);// closing the file pointer
        //send mail
        //$mail_to and $mail_from must be set.
        $eol="\n"; 
        $mail_to = $fladdress; // Who is the E-Mail going to?
        $mail_from = 'mail.company.com.mx';
        // Where does the E-Mail appear to be from?  
        $host_url = $_SERVER['HTTP_HOST'];
        $message_subject = 'Monthly report'; 
        $headers = 'From: ' . $mail_from. "\r\n".'Reply-To:';
        $headers =.$mail_from."\r\n".'X-Mailer: PHP/'.phpversion();
        $headers .= "\n";    
        $message_body  = ' This is the information you requested';      
        $message_body .= $fltitrpte . "\r\n"; 
        $message_body .= ' data is separated by  "," , ' . "\r\n"; 
        $message_body .= ' Atte.'. "\r\n" ;
        $message_body .= ' Business department'. "\r\n" ;
        $message_body .= "\n\n";
        //File for Attachment 
        $f_name     =   $file_name;
        //use relative path OR ELSE big headaches.
        // $letter is my file for attaching.
        $handle     =   fopen($f_name, 'rb'); 
        $f_contents =   fread($handle, filesize($f_name)); 
        $f_type     =   filetype($f_name); 
        fclose($handle); 
        //Attachment 
        $mime_boundary   =  md5(time()); 
        $msg             = "";
        $msg            .= "--".$mime_boundary.$eol; 
        $msg            .= "Content-Type: application/txt; ".$eol;
        //sometimes i have to send MS Word, use 'msword' 
        //instead of 'pdf'
        $msg            .= "Content-Disposition: attachment;".$eol.$eol;
        // !! This line needs TWO end of lines !! IMPORTANT !!
        $msg            .= $body_content.$eol.$eol; 
        // # Finished 
        $msg            .= "--".$mime_boundary."--".$eol.$eol;
        // finish with two eol's for better security. see Injection.
        if (mail($mail_to, $message_subject, $message_body.$msg, 
           $headers)){
           echo "sent mail";
        }else{
            echo "Error envio de correo";
        }
    }
    

    Remember if your php is new you have to change sendmail file in php