Avatar billede cgleerup Nybegynder
24. januar 2008 - 09:56 Der er 20 kommentarer og
1 løsning

Sende email fra formular i flash

Hej med jer,

Er der nogen der kender en god og simpel email formular til flash, jeg har fiflet lidt med et PHP modul men det spiller ikke rigtigt!
Avatar billede maqhem Nybegynder
24. januar 2008 - 10:25 #1
Flash:
var lv:LoadVars = new LoadVars();
lv.fra = "noreply@eksperten.dk";
lv.til = "dig@etdomaene.dk";
lv.emne = "Testmail fra Flash";
lv.besked = "Hej! Dette er en test.";
lv.onLoad = function(success:Boolean):Void {
    if(success == true) {
        trace("Forbindelsen kunne oprettes");
        trace(lv.rep);
    } else {
        trace("Kunne ikke oprette forbindelse");
    }
}
lv.sendAndLoac("http://www.ditdomaene.dk/phpscript.php", lv, "POST");

PHP:
For et mere avanceret eksempel, se http://www.w3schools.com/php/php_mail.asp
Indtil videre kan du benytte nedenstående, som bare sætter to, from, subject og message:

<?php
    $to = $_POST["til"];
    $subject = $_POST["emne"];
    $message = $_POST["besked"];
    $from = $_POST["fra"];
    $headers = "From: $from";
    if(mail($to, $subject, $message, $headers)) {
        echo "E-mailes er sendt!";
    } else {
        echo "E-mailen kunne desværre ikke blive sendt...";
    }
?>

Jeg har ikke lige testet efter, men det burde du :)
Avatar billede cgleerup Nybegynder
24. januar 2008 - 10:27 #2
lyder simpelt, men så er det jo kun faste tekster, right? jeg vil gerne have formularfelter til brugerens udfyldning!
Avatar billede maqhem Nybegynder
24. januar 2008 - 10:40 #3
Dem kan du bare selv lave jo. Lav fire tekstfelter og kald dem henholdsvis til, fra, emne og besked. Lav så et movieclip i bunden og kald det sendmail. Ændr så koden til følgende:

var lv:LoadVars;
sendmail.onRelease = function() {
    lv = new LoadVars();
    lv.fra = fra.text;
    lv.til = til.text;
    lv.emne = emne.text;
    lv.besked = besked.text;
    lv.onLoad = function(success:Boolean):Void {
        if(success == true) {
            trace("Forbindelsen kunne oprettes");
            trace(lv.rep);
        } else {
            trace("Kunne ikke oprette forbindelse");
        }
    }
    lv.sendAndLoac("http://www.ditdomaene.dk/phpscript.php", lv, "POST");
}
Avatar billede maqhem Nybegynder
24. januar 2008 - 10:44 #4
Og derfra ordnes resten i PHP. Så vidt jeg husker, vil ovenstående ikke kunne sende linjeskift med mere. Det skal ordnes i PHP's header-del:

<?php
    $to = $_POST["til"];
    $subject = $_POST["emne"];
    $message = $_POST["besked"];
    $from = $_POST["fra"];
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: $from";
    if(mail($to, $subject, $message, $headers)) {
        echo "E-mailes er sendt!";
    } else {
        echo "E-mailen kunne desværre ikke blive sendt...";
    }
?>
Avatar billede cgleerup Nybegynder
24. januar 2008 - 10:44 #5
oki - kigger lige på det! og tak så langt!
Avatar billede maqhem Nybegynder
24. januar 2008 - 10:57 #6
Jeg lavede lige et par fejl, kan jeg se, men jeg har nu lavet et komplet eksempel - der virker, selvfølgelig. Og denne gang kan du sende HTML med uden proplemer. Du skal bare være opmærksom på, at nogen klienter ikke accepterer HTML, og at andre ikke tolker det så godt. Men hér er så koderne:

Flash
---------
var lv:LoadVars;
sendmail.onRelease = function() {
    lv = new LoadVars();
    lv.fra = fra.text;
    lv.til = til.text;
    lv.emne = emne.text;
    lv.besked = besked.text;
    lv.onLoad = function(success:Boolean):Void {
        if(success == true) {
            trace("Forbindelsen kunne oprettes");
            trace(lv.rep);
        } else {
            trace("Kunne ikke oprette forbindelse");
        }
    }
    lv.sendAndLoad("http://www.maqhem.com/exp/mail/sendmail.php", lv, "POST");
}

PHP
---------
<?php
    $to = $_POST["til"];
    $subject = $_POST["emne"];
    $message = nl2br($_POST["besked"]);
    $from = $_POST["fra"];
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $headers .= "From: $from";
    if(mail($to, $subject, $message, $headers)) {
        echo "rep=E-mailes er sendt!";
    } else {
        echo "rep=E-mailen kunne desværre ikke blive sendt...";
    }
?>
Avatar billede cgleerup Nybegynder
24. januar 2008 - 13:28 #7
Hvad skal php filen hedde?
Avatar billede maqhem Nybegynder
24. januar 2008 - 15:04 #8
Din PHP-fil skal selvfølgelig hedde det, som jeg kalder fra Flash:

lv.sendAndLoad("http://www.maqhem.com/exp/mail/sendmail.php", lv, "POST");

Hér hedder PHP-filen sendmail.php og ligger i mappen mail, der ligger i mappen exp på mit webhotel http://www.maqhem.com :)

Dette kan du ændre til lige det, du har lyst til, og det vil ikke have nogen indflydelse. Du skal bare huske, at den sti, du definerer i Flash-filen, skal selvfølgelig være destinationen for din PHP-fil.
Avatar billede cgleerup Nybegynder
24. januar 2008 - 15:04 #9
Det driller mig lidt, kan du evnetuelt lokkes til at lave en fla fil som du kan sende til cgleerup@hotmail.com - hvis jeg smider flere point?
Avatar billede cgleerup Nybegynder
24. januar 2008 - 15:06 #10
dohh, nu er jeg med tror jeg!
Avatar billede cgleerup Nybegynder
24. januar 2008 - 15:19 #11
Nu vil den sende mails, MEN! - hvordan får jeg lavet så at brugeren får besked om at beskeden rent faktisk ER sendt?
Avatar billede maqhem Nybegynder
24. januar 2008 - 15:34 #12
Du er vidst ikke den største Flash-haj, men det er også okay, så uddyber jeg bare :)

Jeg har proppet nogle traces ind, som kun kan ses, hvis du kører din film i test-mode (Ctrl + Enter). Slet dem! De kan ikke bruges til noget i den virkelige verden.

Efter if(success == true) { kan du skrive gotoAndStop(2);, og så går filmen til frame to, og dér stopper den så. Så kan du skrive "E-mailen er blevet sendt!" hvis du vil.
Og efter } else { kan du skrive gotoAndStop(3);, og så går filmen til frame nummer tre, hvis det ikke lykkedes at sende e-mailen. Sådan hér:

var lv:LoadVars;
sendmail.onRelease = function() {
    lv = new LoadVars();
    lv.fra = fra.text;
    lv.til = til.text;
    lv.emne = emne.text;
    lv.besked = besked.text;
    lv.onLoad = function(success:Boolean):Void {
        if(success == true) {
            gotoAndStop(2);
        } else {
            gotoAndStop(3);
        }
    }
    lv.sendAndLoad("http://www.maqhem.com/exp/mail/sendmail.php", lv, "POST");
}

Og så bare lige husk at lave de to beskeder i frame to og tre.
Avatar billede cgleerup Nybegynder
24. januar 2008 - 15:36 #13
hehe - nope, men det går fremad! - ikke mindst med din hjælp! - havde faktisk forsøgt noget lignende, men det virkerde ikke.
prøver det her!
Avatar billede cgleerup Nybegynder
24. januar 2008 - 15:40 #14
sidste lille ting, så skal du slippe! - hvordan styrer jeg rækkefølget på tabulator skift, altså så man kan springe fra felt til felt? - og kan jeg lave så feltet bliver "clean" for tekst når man klikker i det første gang, jeg har jo skrevet "emne" men når så man klikke, så skal man manuelt slette teksten?
Avatar billede maqhem Nybegynder
24. januar 2008 - 15:57 #15
At styre rækkefølgen af tabulator burde ikke være nødvendig. Den starter fra oven og kører selv ned som i en almindelig HTML-formular. At ændre dette ville da forstyrre brugeren. Og til det andet kan du bruge denne hér kode:

function SetStandardText(tf:TextField, str:String):Void {
    var sf:Number = 0x000000;
    var kf:Number = 0xbfbfbf;
    tf.text = str;
    tf.textColor = kf;
    tf.onSetFocus = function() {
        if(tf.textColor == kf) {
            tf.text = "";
            tf.textColor = sf;
        }
    }
    tf.onKillFocus = function() {
        if(tf.text == "") {
            tf.text = str;
            tf.textColor = kf;
        }
    }
}

Bare prop den på helt i bunden af din kode, og så skriv allerøverst i din kode:

SetStandardText(til, "Indtast modtager");
SetStandardText(fra, "Indtast afsender");
SetStandardText(emne, "Indtast emne");
SetStandardText(besked, "Indtast besked");
Avatar billede maqhem Nybegynder
24. januar 2008 - 16:00 #16
Og hvis du vil ændre på de to farver, som teksten har (hvis man ikke har skrevet noget, og hvis man har), så ændr sf og kf. Men sørg for, at de IKKE har samme værdi, for koden bygger blandt andet på idéen om, at de to farver er forskellige.
Avatar billede cgleerup Nybegynder
24. januar 2008 - 16:32 #17
vil du smide et svar, har været super hjælp!
Avatar billede maqhem Nybegynder
24. januar 2008 - 16:58 #18
Ja det kan du tro, jeg vil. Og jeg glad for din ros. En tur på eksperten skal jo helst være en god oplevelse :)
Avatar billede cgleerup Nybegynder
24. januar 2008 - 17:05 #19
Opretter lige et nyt spørgsmål, hvis du skulle have lyst. Hvor jeg spørger på hvordan jeg kan tjekke for om alle felter er udfyldt med bruger data?
Avatar billede cgleerup Nybegynder
25. januar 2008 - 16:02 #20
Har du en mailadresse, så har jeg lige en forespørgsel
Avatar billede maqhem Nybegynder
25. januar 2008 - 16:51 #21
nicolaj @ wahlqvist . dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester