Mails mit der mail() funktionieren nicht

projumper

Mitglied
Hallo @ all,

ich habe ein merkwürdiges Problem und hoffe auf Eure Hilfe.

Ich habe ein Kontaktformular geschrieben, welches auch wunderbar funktioniert. Nur ist mir aufgefallen das nicht alle Emails bei den Empfängern ankommen.

Das Problem habe ich eingegränzt auf ModeRewrite.

Wenn ich einen normalen Links habe:

http://www.meinedomain.de/front_content.php?idart=63&kunde=muster

oder

http://www.meinedomain.de/front_content.php?idart=63

kommen alle Emails an. Sobald das MR hinzukommt:

http://www.meinedomain.de/kontaktformular oder http://kunde1.meinedomain.de/kontaktformular

kommen nicht mehr alle an. Undzwar ist hier folgende Bessonderheit:

An die Domain kann ich folgendes ran hängen http://kunde1.meinedomain.de/kontaktformular das wird umschrieben auf http://www.meinedomain.de/front_content.php?idart=63&kunde=kunde1 oder http://www.meinedomain.de/kontaktformular das wird umschrieben auf http://www.meinedomain.de/front_content.php?idart=63

und sobald eine "subdomain" bei dem ModeRewrite Link mit angegeben wird kommen nicht alle Emails an.

Weiss jemand woran das liegen kann?

mfg projumper
 

Wie soll Dir denn jemand was dazu sagen wenn keiner weiß wie der Quelltext aussieht, mit der die Post verschickt wird? Hier kann man wieder nur vermuten...

Kommt vielleicht nach mod_rewrite die idart=63 nicht an weil das die Empfänger ID ist und auf jeden Fall benötigt wird, oder fehlt im Sendescript die Variable "Kunde"? Man weiß es eben nicht...
 
Hallo,

welchen Queltext soll ich Posten? Es funktioniert ja alles! Nur manche Emails kommen nicht an!

Ich habe das Problem jetzt gelöst indem ich in die mail Funktion den 5 Parameter ran gehangen habe.

Code:
mail($mail, $subject, $message, $from, "-f bla@bla.de");

Jetzt kommen alle Emails an. Nur ist das Natürlcih sehr merkwürdig. Wo ist den der unterscheid für die mail Funktion zwischen:

http://kunde1.meinedomain.de/kontaktformular und
http://www.meinedomain.de/front_cont...3&kunde=kunde1

mfg

projumper
 
Jetzt kommen alle Emails an. Nur ist das Natürlcih sehr merkwürdig. Wo ist den der unterscheid für die mail Funktion zwischen:
http://kunde1.meinedomain.de/kontaktformular und
http://www.meinedomain.de/front_cont...3&kunde=kunde1

Der Unterschied ist von erster Verknüpfung:
"Der Server unter kunde1.meinedomain.de konnte nicht gefunden werden."
zur zweiten Verknüpfung:
"Error 404 - Not found"

Was hast Du wo angehangen? Wie sah das vorher aus? Wie sieht das Sendescript aus, welches nicht funktioniert? Welche Fehlermeldungen gibt es?
 
Hallo,

also die Links sind ausgedacht. Angehangen habe ich den Parameter "-f" in der mail funktion.

vorher:

Code:
mail($mail, $subject, $message, $from);

nacher:

Code:
mail($mail, $subject, $message, $from, "-f bla@bla.de");

DAs Scriptfunktioniert und bringt keine Fehler, den es kammen nur manche Emails nicht an. Zu den Error Logs hatte ich leider keinen Zugang.

Nach dem ich den "-f" Parameter angehangen habe kammen alle an. Die Links sind gleich, nur das der eine mit MR "bearbeitet" wurde.

mfg

projumper

Um das Problem zu verdeutlcihen:

Wenn man über diesen Link (http://www.meinedomain.de/front_cont...3&kunde=kunde1) reingekommen ist zu dem Formular. Hat diese Zeile:

Code:
mail($mail, $subject, $message, $from);

funktioniert. Alle Emails wurde auch zugestellt.

Wenn man über diesen Link (http://kunde1.meinedomain.de/kontaktformular) reingekommen ist zu dem Formular. Hat diese Zeile:

Code:
mail($mail, $subject, $message, $from);

funktioniert ABER nicht alle Emails wurde zu gestellt.
Erst nach dem ich die Code Zeile ergänzt habe um den "-f" Parameter kammen ALLE Emails an.

Deswegen die Frage: Warum unterscheidet die mail Funktion wie man das Kontaktformular aufgerufen hat?

mfg

projumper
 
also die Links sind ausgedacht. Angehangen habe ich den Parameter "-f" in der mail funktion.
Auszug aus manual/de/function.mail
Um eine E-Mail zu senden, muss die E-Mail einen From-Header enthalten. Dies kann entweder durch Setzen eines additional_headers -Parameters oder durch Setzen eines Standardwertes in der php.ini geschehen.
Falls dies nicht geschieht, wird eine Fehlermeldung ähnlich wie Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing ausgegeben. Der From: Header setzt unter Windows auch den Return-Path: Header.
Wenn E-Mails nicht ankommen, versuchen Sie bitte, nur das LF-Zeichen (\n) zu verwenden. Einige UNIX-MTAs (mail transfer agents) ersetzen leider LF durch CRLF (\r\n) automatisch (wodurch das CR-Zeichen verdoppelt wird, wenn CRLF verwendet wird). Dies sollte aber nur in Ausnahmefällen geschehen, da es gegen » RFC 2822 verstößt.

vorher:
Code:
mail($mail, $subject, $message, $from);
nacher:
Code:
mail($mail, $subject, $message, $from, "-f bla@bla.de");
Nach dem ich den "-f" Parameter angehangen habe kammen alle an. Die Links sind gleich, nur das der eine mit MR "bearbeitet" wurde.
Das legt die Vermutung nahe, das teilweise der From-Header fehlt.
Deswegen die Frage: Warum unterscheidet die mail Funktion wie man das Kontaktformular aufgerufen hat?
Das passiert wohl nur, wenn Du das so programmiert hast.
Mit Fehlermeldungen meinte ich übrigens nicht die Fehlerprotokolle, sondern:
Rückgabewerte

mail () gibt TRUE zurück, wenn die E-Mail erfolgreich für den Versand akzeptiert wurde, sonst FALSE.
 
Das passiert wohl nur, wenn Du das so programmiert hast.

das ist das selbe modul, ich habe keine 2 module für mr und einmal für ohne.

Code:
mail($mail, $subject, $message, $from, "-f bla@bla.de");

in der variable $from ist der header enthalten. "-f" habe ich zusätzlich hinzugefügt.

Mit Fehlermeldungen meinte ich übrigens nicht die Fehlerprotokolle, sondern:
Rückgabewerte

Es gibt keine Fehler, keine Warnings. Das Modul Funktioniert ohne Fehler. Rückgabewert von der mail() ist TRUE

Ich stelle mal die Frage anders:

Reagiert die Funktion mail() bei unterschiedlichen Links anders? Haben die "EingangsLinks"(also die Links mit denen das Kontaktformular aufruft ) Einfluss auf den Header oder sonstige Sachen?

mfg

projumper
 
Nochmal:
PHP:
<?
if (mail('info@localhost.de', 'Betreff', 'Nachricht'))
  echo 'OK';
else
  echo 'Fehler';
?>
Das sind die Mindestanforderungen an mail(), wenn in der php.ini sendmail_from gesetzt ist.
Wenn nicht, muß der Header from: manuell gesetzt werden.
PHP:
<?
if (mail('info@localhost.de', 'Betreff', 'Nachricht', 'from: info@localhost.de'))
  echo 'OK';
else
  echo 'Fehler';
?>
Jetzt können natürlich alle 3 bzw. 4 Parameter durch Variablen ersetzt werden, dabei ist es völlig wurscht von wo die Seite aufgerufen wird, Hauptsache die PARAMETER sind EXISTEND und GÜLTIG!

Du kannst das leicht testen, indem Du z. B. das zweite Beispiel mit Deiner Email ersetzt, alles andere so lässt und die Mailfunktion von den verschiedenen Seiten aus aufrufst.
Sollte das Ergebnis TRUE sein und eine Mail nicht ankommen liegt die Ursache nicht im PHP Quelltext für diese Mailfunktion.
 
Evtl einfach mal in die Logdateien vom Mailserver schaun was da steht bei den Mails die nicht ankommen, meist steht dann schon drin warum.
 
Zuletzt bearbeitet:
Zurück