RainerW: mail() Funktion zickt

Hallo miteinander

wie der Titel erahnen lässt habe ich gewisse Probleme mit der mail() Funktion in PHP. Mails werden bei mir grundsätzlich nicht versicht und wenn ich mir den Erfolg/Misserfolg des Methodenaufrufs ausgeben lasse bleibt es immer beim Misserfolg.

Sprich:

if(!mail('empfänger@abc.de', 'Betreff', 'Nachricht'))  
{  
	echo "Fehler";  
}  
else  
{  
	echo "Super";  
}

hier steht bei mir jedesmal einfach 'Fehler' da.

Auch wenn ich einen Header mit einbaue ändert sich daran nichts. In der php.ini habe ich ebenfalls einen Mailserver angegeben, dessen Einstellungen mir in den phpinfos auch korrekt angezeigt werden. (sendmail_from enthält die gewählte Adresse, SMTP die Server IP, smtp_port steht auf 25).
Der Mailserver wird ebenfalls von einem bestehenden Shop System verwendet, dort erfüllt er seinen Dienst.

Ich werde hier jedenfalls nicht wirklich schlauer bei. Vergesse ich bei meinem Vorgehen irgendetwas grundlegendes?
Gibt es vielleicht eine Möglichkeit, die Ursache für den Fehlschlag der mail() Funktion ausgeben zu lassen?

Danke im Voraus für alle hilfreichen Tips!

  1. Hi!

    if(!mail('empfänger@abc.de', 'Betreff', 'Nachricht'))

    Bitte für Beispiele nicht einfach irgendwelche Domains anderer Inhaber nehmen sondern die extra dafür vorgesehenen.

    In der php.ini habe ich ebenfalls einen Mailserver angegeben, dessen Einstellungen mir in den phpinfos auch korrekt angezeigt werden. (sendmail_from enthält die gewählte Adresse, SMTP die Server IP, smtp_port steht auf 25).

    Es wäre schön, wenn du dazusagen würdest, dass bei dir PHP unter Windows läuft. Das schließe ich jedenfalls aus den von dir verwendeten php.ini-Direktiven.

    Gibt es vielleicht eine Möglichkeit, die Ursache für den Fehlschlag der mail() Funktion ausgeben zu lassen?

    Was sagt denn der Mailserver in seinem Protokoll?

    Lo!

    1. Bitte für Beispiele nicht einfach irgendwelche Domains anderer Inhaber nehmen sondern die extra dafür vorgesehenen.

      Es handelt sich um eine normale .de Adresse. Diese wurde auch für Tests im bereits erwähnten System verwendet bei dem die Mails auch ankamen (und auch immernoch ankommen).

      Es wäre schön, wenn du dazusagen würdest, dass bei dir PHP unter Windows läuft. Das schließe ich jedenfalls aus den von dir verwendeten php.ini-Direktiven.

      Korrekt, ich benutze Windows7.

      Was sagt denn der Mailserver in seinem Protokoll?

      Die Logs zeigen keinerlei Informationen zu irgendwelchen Vorgängen aus dem Zeitrahmen in dem ich die Tests durchgeführt habe. Es scheint also nichtmal eine Anfrage anzukommen.

      1. Moin,
        ich bin leider nicht aus der "PHP"-Fraktion, weiß aber dass man das "@" symbol in vielen Programmiersprachen entsprechend maskieren muß. Zum Beispiel mit einem "" (Backslash).

        Bye!

        1. Moin,

          ich bin leider nicht aus der "PHP"-Fraktion, weiß aber dass man das "@" symbol in vielen Programmiersprachen entsprechend maskieren muß. Zum Beispiel mit einem "" (Backslash).

          In diesem Falle nicht.

          Mich würde mal interessieren, wie denn die php.ini aussieht... Funktionieren denn alle anderen PHP-Funktionen?

          Grüße Marco

          1. Mich würde mal interessieren, wie denn die php.ini aussieht... Funktionieren denn alle anderen PHP-Funktionen?

            Ansonsten treten keine weiteren Probleme auf. Wie gesagt, beim auslesen der phpinfos sieht auch alles normal aus. Ich habe auch schon mit ini_get und ini_set herumgespielt um ganz sicher zu gehen, leider alles ohne Erfolg.

            Es gibt da auch einige Werte mit denen ich auf Anhieb nichts anzufangen weiß:
            mail.add_x_header (steht auf 'on'), sendmail_path (steht auf '/usr/sbin/sendmail -t -i') und mail.force_extra_parameters (steht auf 'no value').
            Daran habe ich allerdings auch erstmal nichts verändert.

            1. Moin!

              Es gibt da auch einige Werte mit denen ich auf Anhieb nichts anzufangen weiß:
              mail.add_x_header (steht auf 'on'), sendmail_path (steht auf '/usr/sbin/sendmail -t -i') und mail.force_extra_parameters (steht auf 'no value').

              RTFM (read the fine manual)

              MFFG (Mit freundlich- friedfertigem Grinsen)

              fastix

              1. Moin!

                sendmail_path (steht auf '/usr/sbin/sendmail -t -i')
                RTFM (read the fine manual)

                Zitat:

                sendmail_path string
                ...
                Diese Option funktioniert auch unter Windows. Wenn Sie gesetzt ist, werden smtp, smtp_port und sendmail_from ignoriert und das angegebene Kommando wird ausgeführt.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix

                1. Hallo,

                  RTFM (read the fine manual)
                  sendmail_path string
                  ...
                  Diese Option funktioniert auch unter Windows. Wenn Sie gesetzt ist, werden smtp, smtp_port und sendmail_from ignoriert und das angegebene Kommando wird ausgeführt.

                  das war mir auch noch nicht bekannt, danke für den Hinweis - aber wer hat denn unter Windows ein Programm mit einem sendmail-kompatiblen Aufruf? Das dürfte ja ein eher hypothetischer Ansatz sein.

                  Ciao,
                   Martin

                  --
                  Solange der Nagellack nicht trocken ist,
                  ist eine Frau praktisch wehrlos.
                    (Burt Reynolds, US-Schauspieler)
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                  1. Moin!

                    aber wer hat denn unter Windows ein Programm mit einem sendmail-kompatiblen Aufruf? Das dürfte ja ein eher hypothetischer Ansatz sein.

                    Glaub ich weniger.

                    Es gibt davon ein paar mehr.

                    MFFG (Mit freundlich- friedfertigem Grinsen)

                    fastix

                    1. Hallo,

                      aber wer hat denn unter Windows ein Programm mit einem sendmail-kompatiblen Aufruf? Das dürfte ja ein eher hypothetischer Ansatz sein.
                      Glaub ich weniger.

                      dass es auch Implemetierungen für Windows gibt, habe ich nicht bezweifelt, auch wenn ich es bisher nicht konkret wusste. Mit "hypothetisch" meinte ich eher: Wie wahrscheinlich ist es, dass jemand das auf seinem Windows-Rechner zur Verfügung hat?

                      Ciao,
                       Martin

                      --
                      Der Stress von heute ist die gute alte Zeit von morgen.
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Moin!

        Korrekt, ich benutze Windows7.

        1. Prüfe das Error-Log des Webservers.

        Es scheint also nichtmal eine Anfrage anzukommen.

        2. Prüfe ob eine Firewall den Verbindungsaufbau blockiert.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

  2. Hallo,

    if(!mail('empfänger@abc.de', 'Betreff', 'Nachricht'))

    zum Missbrauch willkürlich ausgewählter fremder Domains als Beispiel hat dedlfix ja schon etwas gesagt.

    Du schreibst weiter:

    Es handelt sich um eine normale .de Adresse.

    Das heißt, du willst die Nachricht bei einem "öffentlichen" Server einreichen, nicht bei einem Testserver im eigenen LAN. Erfordert dieser Server eine Authentifizierung mit Benutzername und Kennwort (SMTP-AUTH)? Das ist mittlerweile bei sehr vielen der Fall, aber das unterstützt die PHP-Funktion mail() leider nicht.

    hier steht bei mir jedesmal einfach 'Fehler' da.

    Hast du mal versucht, den SMTP-Dialog zwischen PHP und dem Mailserver mitzuschneiden, um herauszufinden, was die *wirklich* untereinander auskaspern? Wireshark kann da gute Dienste leisten.

    Auch wenn ich einen Header mit einbaue ändert sich daran nichts.

    Wenn es das ist, was ich angedeutet habe - logisch.

    Der Mailserver wird ebenfalls von einem bestehenden Shop System verwendet, dort erfüllt er seinen Dienst.

    Wie wird er von dort aus angesprochen?

    Gibt es vielleicht eine Möglichkeit, die Ursache für den Fehlschlag der mail() Funktion ausgeben zu lassen?

    Nur durch Protokollieren des Datenverkehrs, wie vorgeschlagen.

    So long,
     Martin

    --
    Lebensmotto der Egoisten:
    Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Erfordert dieser Server eine Authentifizierung mit Benutzername und Kennwort (SMTP-AUTH)? Das ist mittlerweile bei sehr vielen der Fall, aber das unterstützt die PHP-Funktion mail() leider nicht.

      Nein, eine Authentifizierung ist nicht notwendig. Wird auch vom anderen System aus nicht durchgeführt.

      Der Mailserver wird ebenfalls von einem bestehenden Shop System verwendet, dort erfüllt er seinen Dienst.

      Wie wird er von dort aus angesprochen?

      Kann ich nicht 100%ig beantworten. Das Shop System bietet ein Modul in der Benutzeroberfläche in dem man die Daten ähnlich wie in PHP definiert: Unter anderem zur Authentifizierung(wird dort leer gelassen), SMTP Host sowie Port.

      1. Mahlzeit RainerW,

        Erfordert dieser Server eine Authentifizierung mit Benutzername und Kennwort (SMTP-AUTH)? Das ist mittlerweile bei sehr vielen der Fall, aber das unterstützt die PHP-Funktion mail() leider nicht.
        Nein, eine Authentifizierung ist nicht notwendig. Wird auch vom anderen System aus nicht durchgeführt.

        Und der Mailserver akzeptiert einfach alle bei ihm "eingeworfenen" Emails - egal von z.B. welcher IP-Adresse sie kommen?

        (Könntest Du den Mailserver mal nennen? *hrhrhr*)

        Hast Du fastix' Hinweis bezüglich einer Firewall berücksichtigt?

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:& n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  3. [latex]Mae  govannen![/latex]

    wie der Titel erahnen lässt habe ich gewisse Probleme mit der mail() Funktion in PHP. Mails werden bei mir grundsätzlich nicht versicht und wenn ich mir den Erfolg/Misserfolg des Methodenaufrufs ausgeben lasse bleibt es immer beim Misserfolg.

    Was sagt die Hilfe deines Anbieters zu mail-Versand per PHP? Muß man dort im 5. Parameter von mail() zusätzliche Angaben machen, bspw. eine envelope-adresse?

    Stur lächeln und winken, Männer!
    Kai

    --
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
    in Richtung "Mess up the Web".(suit)
    SelfHTML-Forum-Stylesheet