Avatar billede boris Mester
05. november 2004 - 12:17 Der er 18 kommentarer og
1 løsning

Fejlhåndtering af mail()

Kan man på nogen måde tjekke, om mail() faktisk afsender den mail, som skal sendes eller om der kommer fejl?
Jeg har prøvet af skrive rent volapyk i en E-mail adresse, men der sker ikke andet end at der selvfølgelig ikke er nogen som får nogen mail.
Jeg er ved at lave en log over afsendte mails og ville selvfølgelig også gerne have et lille flag med om hvor vellykket afsendelsen er, men PHP er og bliver mit "andet hovedsprog".
Avatar billede detox Nybegynder
05. november 2004 - 12:23 #1
Du kan bruge if():

if (mail($to,$subject,$message,$headers)) {
  // mail er sendt
} else {
  // mail blev ikke sendt
}
Avatar billede detox Nybegynder
05. november 2004 - 12:25 #2
Men hvis du vil tjekke om mail adressen rent faktisk findes er du nok nødt til at lave et opslag på adressen.
Avatar billede boris Mester
05. november 2004 - 12:32 #3
Det er ret mystisk. Kan nogen forklare dette:
if (mail("xxx@xxx.dk", "xxxxxx", $mail)){
print "Afsendt";
}
else{
print "Fiasko";
}

Det underlige er, at den skriver 'fiasko', når jeg bruger en gyldig adresse og den faktisk afsendes. Hvis jeg laver domænenavnet om til noget vrøvl, skriver den 'afsendt'!
Avatar billede boris Mester
05. november 2004 - 12:41 #4
Metoden ser ud til at virke, men jeg har prøvet flere gange, og resultatet er simpelthen modsat, betingelsen giver true, når der er fejlog false, når det virker. Hvorfor mon eller er det bare sådan????
Avatar billede detox Nybegynder
05. november 2004 - 12:44 #5
Er det din egen server?
Avatar billede boris Mester
05. november 2004 - 12:46 #6
Det er Worldoffline  (Tiscali)
Avatar billede detox Nybegynder
05. november 2004 - 12:46 #7
Altså et webhotel, eller...?
Avatar billede boris Mester
05. november 2004 - 12:50 #8
Nemlig et Tiscali webhotel. Det plejer at fungere udmærket. Men det skulle da være underligt om de ændrede en mail() funktion i PHP?
Avatar billede hmortensen Nybegynder
05. november 2004 - 12:56 #9
Er det en windows server ?
Avatar billede boris Mester
05. november 2004 - 12:57 #10
Nej, det er en Linux
Avatar billede detox Nybegynder
05. november 2004 - 13:01 #11
Jeg har samme resultat her. På windows får jeg:

Warning: mail() [function.mail]: SMTP server response: 550 <mcjffjignfgudodetox@buksfgdhghsfevand.dk>: Recipient address rejected: Domain not found in E:\phps\a3.php on line 8

men på linux returnerer den true?
Avatar billede hmortensen Nybegynder
05. november 2004 - 13:08 #12
Kan det være pga. af safe_mode ?
Jeg kører med safe_mode, og den returnere true i begge tilfælde
Avatar billede boris Mester
05. november 2004 - 13:18 #13
hmortensen du må også gerne lægge et svar og indtil videre går jeg ud fra at true betyder fejl. Hvis nogen finder en forklaring, kunne det være interessant at høre om.
Jeg har en anden løsning på en chili asp server, hvor smtp objektet virker fantastisk godt og laver fejl, hvis adressen er forkert eller ikke findes. Men der er ikke asp på dette webhotel.
Avatar billede boris Mester
05. november 2004 - 13:19 #14
Ang. safe_mode ved jeg det hvad tiscali har.
Avatar billede detox Nybegynder
05. november 2004 - 13:29 #15
På mit webhotel (Linux / safe_mode) returnerer den osse true uanset hvad. At din ligefrem virker omvendt er jo noget forunderligt, men dog anvendeligt ;o)
Avatar billede boris Mester
05. november 2004 - 13:35 #16
Ja, så længe Worldoffline ikke opdager det er en fejl og ændrer det
Avatar billede myplacedk Nybegynder
07. november 2004 - 11:02 #17
mail()-funktion er en meget simpel funktion, som er fint hvis man vil noget meget simpelt.

Hvis man ønsker mere kontrol over hvad der sker, så kan jeg anbefale at bruge Mail-pakken fra Pear.
Jeg er kun én enkelt gang været i en situation, hvor den ikke kunne det, jeg havde brug for. (I den situation endte jeg med at starte fra bunden med rå TCP-sockets.)
Avatar billede sukos Juniormester
07. november 2004 - 11:20 #18
Prøv at sætte en afsender på.
Og jeg ville nok bruge et @ for at sikre fejlmeddelser ikke vises

if (@mail("xxx@xxx.dk", "xxxxxx", $mail, "From:brugbar@mail.dk")){
print "Afsendt";
}
else
{
print "Fiasko";
}
Avatar billede boris Mester
07. november 2004 - 11:59 #19
Tak til alle. Jeg forsøge også at sætte afsender på, det er lige nu en default afsender. Alle har fortjent point.
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