Patrick Klein: Prüfen, ob mail ausgeführt wurde.

Hi,

folgendes Problem:
Ich verschicke eine Mail mittels PHP und dem Befehl 'mail'.
Wie prüfe ich, ob die Mail auch verschickt wurde?
Ich möchte gerne ausgeben, ob Fehler oder Erfolg.

Vielen Dank
Patrick

  1. Hi,

    Du kannst nicht prüfen, ob die Mail versendet wurde. Da musst Du Dich auf Deinen Mailserver verlassen. Du kannst nur prüfen, ob die Mail erfolgreich an Deinen Mailserver abgegeben wurde:

    $mail = @mail($to, $subject, $mailcontent, $specialheaders);
    if($mail) {
        echo 'gesendet!';
    } else {
        echo 'nicht gesendet!';
    }

    Hinweis:
    Das @ Zeichen dient dabei nur zur Unterdrückung der Fehlermeldung die entstehen würde, wenn Mail-Funktion nicht richtig ausgeführt werden kann. Du musst auch nicht unbedingt eine Variable für den Test verwenden. Kannst die Funktion direkt in die if() reinschreiben.

    Sobald die Mail dem Mailserver übergeben wurde, liegt es an ihm die Mail zu versenden...

    Gruss
    Stefan

    1. Hi Stefan,

      erstmal Danke!
      Das habe ich ja gemeint.
      Wenn der Mailserver nicht mitspielt, kann PHP ja relativ wenig dafür ;-)

      Vielen Dank
      Patrick

      1. Hello,

        Das habe ich ja gemeint.
        Wenn der Mailserver nicht mitspielt, kann PHP ja relativ wenig dafür ;-)

        Dann solltest Du jeder mail eine ID einstanzen, was manche Mailserver sowieso nachholen, wenn der UserClient (oder das PHP-Programm) es nicht getan haben. Wenn Du aber bewusst eine ID eingestanzt hast, wird der Mailserver diese in Ruhe lassen (sofern er nach RFC arbeitet) und Du kannst Dir eine BCC generieren lassen in ein spezielles Verzeichnis (Mailkonto). In diesem Konto könnten auch die Quittungen auflaufen. Du kannst dann ein PHP-Mailinterface aufbauen, das die Header der Mails in diesem Verzeichnis auswertet und die Resultate in eine DB einträgt. So hast Du Übersicht über den Informationsfluss.

        Wenn Dein System fertig ist, kannst Du es hier veröffentlichen. Das können viele gebrauchen. Bei Detailfragen werden daher bestimmt auch einige gerne helfen.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Sehr schöne Lösung.

          Einzigste Schwachstelle: Das Senden der Mails kann teilweise zeitverzögert von Statten gehen. In dem Fall müsste man also überlegen wie man es abfängt.

          Wenn die Übersicht über erfolgreich versendete EMails an einen Administrator gehen soll, der sich über ein Interface den Status der Emails anzeigen lassen möchte, dann ist das sicherlich so sehr gut zu lösen (genialer Ansatz :o))

          Für eine einfache Funktion, die den Mailversandt prüft, gibt es auf diesem Weg aber denke ich mal sehr viele Timeouts. :o(

          Gruss
          Stefan

          1. Hello,

            Für eine einfache Funktion, die den Mailversandt prüft, gibt es auf diesem Weg aber denke ich mal sehr viele Timeouts. :o(

            Dafür ist sie bestimmt ungeeignet, da das ganze Client-Server-Prinzip immer auf Etappen und "Töpfchenwirtschaft" (Stapelverarbeitung) basiert. Eine sofortige Dialogantwort sollte man also nicht erwarten.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. Hallo !

              bzw. Guten Morgen

              das Thema interessiert mich ebenfalls =)

              "Dann solltest Du jeder mail eine ID einstanzen,"

              wie genau ist das gemeint ?

              so long
              Micha

              1. Hello,

                das Thema interessiert mich ebenfalls =)

                "Dann solltest Du jeder mail eine ID einstanzen,"
                wie genau ist das gemeint ?

                Die Mailheader sehen die Vergabe einer Message-ID vor. Mehr darüber gibt es in der entsprechenden RFC zu lesen, deren Nummer ich aber nicht auswendig weiß. http://netzmafia.de/rfc/rfc/

                Schau einfach mal in den Quellcode einer Mail rein.

                Return-Path: <********@onlinehome.de>
                Delivered-To: ********@bitworks.de
                Received: (qmail 14573 invoked by uid 89); 15 Apr 2004 21:00:02 -0000
                Received: from moutng.kundenserver.de (212.227.126.187)
                  by ******** with SMTP; 15 Apr 2004 21:00:02 -0000
                Received: from [212.227.126.205] (helo=mrelayng.kundenserver.de)
                 by moutng.kundenserver.de with esmtp (Exim 3.35 #1)
                 id 1BEDxq-00014s-00
                 for ********@bitworks.de; Thu, 15 Apr 2004 23:00:02 +0200
                Received: from [********] (helo=wir5)
                 by mrelayng.kundenserver.de with asmtp (Exim 3.35 #1)
                 id 1BEDxU-0006TU-00
                 for ********@bitworks.de; Thu, 15 Apr 2004 22:59:40 +0200
                Message-ID: 000e01c4232c$932d28c0$ed418650@wir5
                From: "********" <********@onlinehome.de>
                To: "********" <********@bitworks.de>

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen