Sad, nasao sam neki free kod na netu za contact forme pa pokusavam da prepravim za newsletter posto mi treba samo slanje maila koji se unese. Generalno nista komplikovano ali ipak ne uspevam da posaljem mail. Uz pomoc trace komande sam pratio sta se desava i skapirao da kod sledeceg dela koda zapinje:
var email_data:String = "&email=" + contact_email.text
+ "&subject=Prijava na newsletter"
+ "&message=" + contact_email.text;
var URL_vars:URLVariables = new URLVariables(email_data);
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
URL_request.data = URL_vars;
var_load.load(URL_request);
var_load.addEventListener(Event.COMPLETE, receive_response);
Php skripta je sledeca:
<?php
$contact_email = $_POST['email'];
if( $contact_name == true )
{
$sender = $contact_email;
$receiver = "[email protected]";
$client_ip = $_SERVER['REMOTE_ADDR'];
$email_body = "Email: $sender \n\nSubject: Prijava na newsletter listu \n\nMessage: \n\n$sender ";
$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();
if( mail( $receiver, $email_body, $extra ) )
{
echo "success=yes";
}
else
{
echo "success=no";
}
}
?>
Sam CS5 mi salje sledecu gresku:
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 newsform_fla::MainTimeline/submit()
A evo i kompletnog as3 koda za svaki slucaj:
import flash.utils.Timer;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.events.Event;
import flash.events.TimerEvent;
contact_email.text = "";
message_status.text = "";
send_button.addEventListener(MouseEvent.CLICK, submit);
var timer:Timer
var var_load:URLLoader = new URLLoader
var URL_request:URLRequest = new URLRequest("send_email.php");
URL_request.method = URLRequestMethod.POST;
function submit(e:MouseEvent):void
{
if(contact_email.text=="")
{
message_status.text = "Molimo Vas unesite mail";
}
else if(!validate_email(contact_email.text))
{
message_status.text = "Molimo Vas unesite ispravan mail";
}
else
{
message_status.text = "Šalje se...";
var email_data:String = "&email=" + contact_email.text
+ "&subject=Prijava na newsletter"
+ "&message=" + contact_email.text;
var URL_vars:URLVariables = new URLVariables(email_data);
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;
URL_request.data = URL_vars;
var_load.load(URL_request);
var_load.addEventListener(Event.COMPLETE, receive_response);
}
}
function validate_email(s:String):Boolean
{
var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
var r:Object=p.exec(s);
if(r == null)
{
return false;
}
return true;
}
function receive_response(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var email_status = new URLVariables(loader.data).success;
if (email_status == "yes")
{
message_status.text = "Vaša poruka je uspešno poslata.";
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, on_timer);
timer.start();
}
else
{
message_status.text = "Došlo je do greške. Mail nije poslat.";
}
}
function on_timer(te:TimerEvent):void{
if(timer.currentCount >= 10)
{
contact_email.text = "";
timer.removeEventListener(TimerEvent.TIMER, on_timer);
}
}