13. oktober 2006 - 14:36Der er
9 kommentarer og 1 løsning
Mail sendt - true/false?
Jeg har snuset mig frem til at, hvis funktionen mail() lykkes, returneres TRUE, og ellers FALSE. Læst det i manualen.
Men hvordan bruger man det? Skal man bede om at få kørt funktionen først, og teste på en eller anden måde bagefter, eller slår man det sammen? Hvordan?
Skriv gerne et par linier, om hvordan man bruger TRUE og FALSE på andre funktioner også.
Når en funktion returnere TRUE/FALSE er funktionen af typen boolean. NB en boolean kan antage værdierne TRUE eller FALSE.
Jeg kunne forestille mig at man ligesom med alle andre funktioner skal kalde mail:
<?php $to = "Modtagerens navn <modtager@domain.dk>"; //$to //Mailens modtager //Email adressen skrives imellem <> //Kort navn før <>
$from = "From: Afsenderens navn <afsender@domain.dk>"; //$From //Afsender af mailen //Email adressen skrives imellem <> //Kort navn før <>
$subject = "Titel på email"; //Mailens titel $message = "Her har du så indholdet af emailen!"; //Mailens indhold $headers = "MIME-Version: 1.0\r\n"; //$headers //Standard for mails - optional //Nødvendigt for, at angive afsenderen.
$headers .= "$from\r\n"; //Sætter afsender i mailens header
mail($to, $subject, $message, $headers); //Sender mailen ?> returværdien skal du kun bruge hvis du vil teste på om mailen blev sendt. Hvis det er nødvendigt så skriv det endelig
Skal man sende mail'en først, og så teste bagefter? For så kan jeg ikke se hvordan php ved hvilken mail-funktion, man beder den teste (hvis der nu blir sendt mail til flere gange).
Eller skal mailfunktionen ind i testen sådan:
if((mail($to, $subject, $message, $headers)) === true) echo "Mail blev sendt korrekt!"
Altså, hvis funktionen kun kan returnere true eller false, så behøver du hverken at bruge tre lighedstegn eller overhovedet sammenligne.
Og derudover returnerer funktionen ikke true, hvis mailen er blevet sendt korrekt. Den returnerer true hvis mailen er blevet lagt succesfuldt i kø hos den mail-afsender, som PHP er sat op til at bruge. Men det betyder på ingen måde, at mailen er sendt eller at den nogen sinde bliver det. Det eneste du ved er, at hvis funktionen returnerer false, så bliver mailen med garanti ikke sendt. Hvis den returnerer true, så bliver den "nok" sendt.
Du kan altså skrive:
if (mail($to, $subject, $message, $headers)) { echo "Din mail blev lagt i kø og vil blive sendt hurtigst muligt."; } else { echo "Der skete en fejl. Din mail kan ikke lægges i kø og vil ikke blive sendt."; }
Når scriptet har valideret at mailen ikke indeholder fejl, whatever.. Har det gjort sit for at sende mailen og resten er helt op til om serveren har lyst til at sende mailen eller ej..
Synes godt om
Ny brugerNybegynder
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.