Avatar billede babysus85 Nybegynder
13. oktober 2006 - 14:36 Der 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å.
Avatar billede nizo Nybegynder
13. oktober 2006 - 14:44 #1
true og false er booleans og kan bruges i fx if's og andet..

du kan ex bruge en if til at validerer om mailen er sendt.

if((mail()) === true) echo "Mail blev sendt korrekt!"

For at tjekke booleans skal du bruge 3 = tegn.
Avatar billede nizo Nybegynder
13. oktober 2006 - 14:45 #2
Avatar billede rask2 Nybegynder
13. oktober 2006 - 14:54 #3
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
Avatar billede babysus85 Nybegynder
13. oktober 2006 - 15:03 #4
Jeg vil skrive "Din mail er nu sendt", så brugeren kan se at det lykkedes. Men kun HVIS det lykkedes.
Avatar billede nizo Nybegynder
13. oktober 2006 - 15:05 #5
if((mail($to, $subject, $message, $headers)) === true){
echo "Din mail blev sendt!";
}else{
echo "Der skete en fejl. Din mail blev ikke sendt.";


som jeg skrev ovenfor.
Avatar billede babysus85 Nybegynder
13. oktober 2006 - 15:07 #6
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!"

????
Avatar billede babysus85 Nybegynder
13. oktober 2006 - 15:09 #7
Hovsa...der var jeg for længe om at opdatere.

Det var noget jeg kunne bruge til noget. Skriver du et svar Nizo?
Avatar billede nizo Nybegynder
13. oktober 2006 - 15:11 #8
Så snart du tester om noget sker, afvikler du også funktionen, derfor kan du sætte mail() ind i en if..

Anyways, Svar.
Avatar billede barklund Nybegynder
13. oktober 2006 - 15:14 #9
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.";
}

--
Morten Barklund
Avatar billede nizo Nybegynder
13. oktober 2006 - 15:21 #10
Har jo ingen betydning hvor scriptet har udført?

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..
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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