Avatar billede rohaje Nybegynder
08. september 2004 - 14:17 Der er 12 kommentarer og
3 løsninger

flash og php-mail script, returnere status til flash?

Hej experter

jeg har denne php som jeg bruger til at sende en mail fra flash:

koden i flash ser sådan.
loadVariablesNum ("sendmail.php3", 9, "POST");

php’en :

<?php
$subject="" . $emne . " fra " . $navn . "";
$body="Fra:\r\nNavn: " . $navn . "\r\nTlf nr: " . $tlfnr. "\r\n\r\nbesked: " . $dinbody . "\r\n";
mail("$email","$subject","$body","From: " . $navn . " ~ < " . $dinmail . ">");
?>

Det virker fint,

spørgsmålet er hvordan for jeg den til at returnere status på om mailen er sendt eller ej ? + eventuel error code

mvh

Robert
Avatar billede thulstrup Nybegynder
08. september 2004 - 14:49 #1
Nedenstående er ikke testet og sikkert fuld af fejl, men måske det kan give dig en ide om hvordan det kan gøres.

Flash:
var sendmail_lv = new LoadVars();
sendmail_lv.emne = emne;
sendmail_lv.navn = navn;
sendmail_lv.tlfnr = tlfnr;
sendmail_lv.dinbody = dinbody;
sendmail_lv.sendAndLoad("sendmail.php3", sendmail_lv, "POST");
sendmail_lv.onLoad = function(success) {
    if (success) {
        trace(this.returnStatus);
    }
};


PHP:
<?php
...
$status = mail("$email","$subject","$body","From: " . $navn . " ~ < " . $dinmail . ">") ? "ok" : "fejl";
echo "&returnStatus=" . status;
?>
Avatar billede rohaje Nybegynder
08. september 2004 - 14:58 #2
tak skal du ha, thulstrup, det er lige hvad jeg skal bruge. bare lige for at skære up pap. skal linien i php'en :

mail("$email","$subject","$body","From: " . $navn . " ~ < " . $dinmail . ">");

udskiftes med :

$status = mail("$email","$subject","$body","From: " . $navn . " ~ < " . $dinmail . ">") ? "ok" : "fejl";
echo "&returnStatus=" . status;

eller skal den tilægges efter ?
Avatar billede rohaje Nybegynder
08. september 2004 - 14:59 #3
og smid et et svar
Avatar billede barklund Nybegynder
08. september 2004 - 15:10 #4
mail() returnerer altid true, hvis funktionen findes - mailen bliver nemlig ikke sendt samme millisekund som du kalder funktionen men asynkront af denne. Derfor ved du ikke, om mailen rent faktisk bliver sendt bare fordi mail returnerer true.
Avatar billede rohaje Nybegynder
08. september 2004 - 15:31 #5
hvad skal man så gøre?
Avatar billede rohaje Nybegynder
08. september 2004 - 15:37 #6
forstår jeg det et at den kun vil komme med fejl, hvis den ikke kan finde php'en ellers vil den returnere ok, hvilket ikke er ok til at mailen er sendt men ok til at php'en er fundet og har kørt mail funktionen.
Avatar billede thulstrup Nybegynder
08. september 2004 - 15:57 #7
Yes, Barklund har ret.

mail() returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
(http://dk.php.net/manual/en/function.mail.php)

Så ved jeg ikke hvordan du kan checke det.
Avatar billede barklund Nybegynder
08. september 2004 - 16:16 #8
Du kan ikke lave det på anden måde uden at lave hele mailafsendelsen direkte i php'en - hvilket nu heller ikke er svært, men kræver at du kender lidt til smtp-protokollen og at arbejde med sockets.
Avatar billede barklund Nybegynder
08. september 2004 - 16:16 #9
Hov, det skulle ikke have været et svar, sry :)
Avatar billede rohaje Nybegynder
08. september 2004 - 17:24 #10
Det gør jeg ikke (smtp og sockets)
hvad kan gå galt efter php ( man får et ok, men mailen bliver ikke sendt ) og kan man sige noget om hyppigheden af sådanne fejl?
Jeg tænker på om det ikke er nok med at få bekræftet ( successfully accepted for delivery ).
Avatar billede barklund Nybegynder
08. september 2004 - 17:47 #11
Først kan gå galt på serveren selv, måske den aktive mail process er gået i stå af en eller anden årsag eller den ikke vil levere til den pågældende adresse af en eller anden årsag (ikke gyldig email måske). så kan det også være et problem hos modtageren, måske modtageren slet ikke har en mail server eller måske ikke gider modtage mails eller andet.

Men hvis du en gang kan sende mail fra dit site, så gå ud fra at du altid kan sende mails - med mindre der sker noget på serveren eller mailen ikke er en gyldig mail-adresse.
Avatar billede rohaje Nybegynder
09. september 2004 - 09:29 #12
Ok, 1000 tak for hjælpen begge to.

I det her tilfælde er det altid den samme e-mail der sendes til , så
Jeg satser og prøver thulstrup's return-halløj og håber på at det nok ( skulle der smutte en enkelt er det ikke verdens undergang )


thulstrup smider du ikke et svar så fordeler jeg point
Avatar billede thulstrup Nybegynder
09. september 2004 - 11:58 #13
Ok, men eftersom man ikke (uden videre) kan checke om mailen bliver sendt, så er der jo ingen grund til at få PHP til at sende svar retur. Så kan du jo lige så godt bare skrive det direkte i Flash'en istedet:

loadVariablesNum ("sendmail.php3", 9, "POST");
trace("mailen blev sendt...tror jeg :o)")


eller med LoadVars:

var sendmail_lv = new LoadVars();
sendmail_lv.emne = emne;
sendmail_lv.navn = navn;
sendmail_lv.tlfnr = tlfnr;
sendmail_lv.dinbody = dinbody;
sendmail_lv.sendAndLoad("sendmail.php3", sendmail_lv, "POST");
trace("mailen blev sendt...tror jeg :o)");
Avatar billede rohaje Nybegynder
09. september 2004 - 12:08 #14
he he
Avatar billede barklund Nybegynder
09. september 2004 - 14:05 #15
Det vil jeg faktisk give thulstrup ret i. mail() returnerer aldrig fejl, med mindre mailafsendingsservicen slet ikke kører. Bare der kører en lokal smtp-ting som php kan aflevere til, så vil mail() returnere true.

Og tark for de overvældende mange points :P
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