PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mail() - Funktion gibt falschen Wert zurück



Torsten.E
07-04-2004, 13:07
Wenn die Variable $an eine ungültige Mail Adresse enthält,
gibt "mail" trotzdem TRUE zurück.

Gibt es dazu eine Alternative ?

if(@mail($an,$subject,"",$mail_header))

{ //okay
$return = "1";
}
else
{ // fehler
$return = "0";
}


Grüße

Torsten.E

undefined
07-04-2004, 14:02
Dann mach mal das ed Zeichen weg und du bekommst auch einen realen Rückgabe Wert ;)

if(mail($an,$subject,"",$mail_header))
return true;
zudem wird es dir ohnehin nicht viel bringen, weil die Mail an den Server gesendet wird egal ob Adresse richtig oder falsch dafür must du erst eine routine schreiben.

Pingu
07-04-2004, 14:05
Hi,

ist ja logisch. Da die Funktion mail() die emai nur an den MTA übergibt. Davon bekommst Du dann das Erfolgsergebnis zurück. Der MTA, z.B. sendmail oder postfix, ist dann für die Zustellung zuständig. Erst der MTA kann feststellen, ob die email Adresse funktioniert. Wobei noch nicht einmal das gegeben sein muß. Es kann ja auch sein, daß der MTA auf dem Zielsystem erst feststellt, daß die email nicht zustellbar ist, z.B. wegen eines falschen Benutzernamens.

Das einzigste was Du überprüfen kannst, ist ob die email Adresse formal stimmt. Der nächst Schritt wäre über eine DNS Abfrage, ob für die Domain ein Postfach existiert. Dies kann aber den Nachteil haben, daß wenn die DNS Abfrage zu lange dauert, Dein Script in den Timeout läuft.

Pingu

Torsten.E
07-04-2004, 14:06
Ich hab den Funktionsaufruf auch nur übernommen.
Was macht das AD vor der Funktion eigentlich ?

Nur ist die Mailadresse "Grottenfalsch" nimmt sie der Mail-Server
hoffentlich nicht an und die Funktion gibt mir ein "FALSE" zurück,
war zumindest der Hintergedanke.

Torsten.E

Torsten.E
07-04-2004, 14:11
Dasch abr sa... blöd. Dann bekomm ich in PHP also nicht
einmal mit, ob eine Mail zumindestens versendet worden ist.

Naja, kann man nix machen, trotzdem danke an alle.

Torsten.E

PS: Widme ich mich eben dem nächsten Problem :-)

Gaert
07-04-2004, 14:26
Du hast auch noch die möglichkeit die Mailfunktion zu übergehen und direkt das SMTP Protokoll zu verwenden.
Sowas gibts z.B. bei PEAR, oder du googelst einfach mal nach "PHP SMTP Class".

Torsten.E
07-04-2004, 14:27
In PERL hab ich es ja schon in SMTP :-)
Deshalb dachte ich ja, dass es in PHP auch geht.
Hab aber keine Lust hier nochmal so ein SMTP-Rumps zu programmieren.

Torsten.E

Gaert
07-04-2004, 14:47
PEAR nicht PERL

Du solltest dir die Klassen mal anschauen... da musst du nichts selber programmieren.
http://pear.php.net/manual/en/package.mail.php#package.mail.mail

Torsten.E
07-04-2004, 14:59
Hy Gaert, hast Du auch noch was anderes zu tun, als mir zu helfen ;-)

ups.. hab`s falsch gelesen/verstanden.

Werd mir die Sache mal angucken und sehen,
was sich drauß basteln läßt. Trotzdem danke an Dich

Torsten.E

Gaert
07-04-2004, 15:09
Bedank dich bei SAP,

eigentlich bin ich gerade dabei einen Report in ABAP zu schreiben, aber weil das System heut so lahm ist bleibt genug Zeit um dir zu helfen.

Gruß,

Gaert

Torsten.E
07-04-2004, 15:10
Hier noch ein Problemchen, vielleicht kann das
der Arbeitslose SAP'ler auch noch.

http://www.mrunix.de/forums/showthread.php?s=&threadid=34513

;-)

DANKE AN DICH "SAP" (kostet ja auch genug).

Gaert
07-04-2004, 15:18
Ja, das kann er...

Bin übrigens weder Arbeitslos, noch SAP'ler (Gott sei's gedankt :) ), sondern lediglich SAP Entwickler.

Torsten.E
07-04-2004, 15:23
Als einer der SAP so teuer macht, oder ?

Gaert
07-04-2004, 15:39
Dazu sag ich jetzt mal nix...
(zu aller Leute Beruhigung, die denken, dass ich durch das Posten hier die Kohle eines Kunden verplempere -im Moment bezahlt kein Kunde für mich -l ich arbeite an meiner Dipl. Arbeit und nehme meine Tätigkeit als Moderator war)

Ende des Themas :D

undefined
07-04-2004, 16:03
Warum suchst du dir nicht den passenden regex und prüfst zuvor die E-Mail Adresse?
Ist der Einfachte und schnellste weg - eine pear Möglichkeit hat nicht jeder ;)

Gaert
07-04-2004, 16:10
Durch eine Regex kannst du nur feststellen ob eine Adresse gültig ist, aber nicht ob sie wirklich exisitiert.
Du musst nicht PEAR verwenden... http://phpmailer.sourceforge.net tuts zur not auch.

Torsten.E
07-04-2004, 16:13
Keine Ahnung was Du damit meinst ?

Gaert
07-04-2004, 16:18
Regex = Regular Expression = Regulärer Ausdruck

Damit kannst du Prüfen ob die Syntax der E-Mail stimmt, oder ob jemand Schrott eingegeben hat...

Sowas hier:
http://selfaktuell.teamone.de/tippstricks/programmiertechnik/email/

Das hilft dir aber wie ich schon angesprochen habe nicht mit deinem Problem, dass die mail() Funktion keinen gescheiten Rückgabewert gibt.