can: Email verschicken mit mail()

Hallo Leute,

ich würde gerne an mich eine E-Mail verschicken. Das Projekt läuft bei mir lokal auf dem Rechner.

Was muss ich alles beachten? Mein Code funktioniert überhaupt nicht :-(

  
$subject = "Unsere erste E-Mail";  
$to = "xyz@gmail.com";  
$body = "Das ist Unsere erste E-Mail welche mir mit Xampp versendet haben";  
  
mail($to, $subject, $body);

Mercury habe ich gestartet. Sonst habe ich aber keine Konfigurationsdatei angefasst, sondern nur diesen Code geschrieben.

Was mache ich falsch?

Danke für Hilfe.

Can

  1. Tach!

    Was muss ich alles beachten? Mein Code funktioniert überhaupt nicht :-(

    Du solltest den Rückgabewert der Funktion mail() beachten. Ist er true oder false? var_dump() hilft beim Analysieren.
    Du solltest mit phpinfo() nachschauen, wie SMTP und smtp_port eingestellt sind.
    Du solltest mit einem Telnet-Programm prüfen, ob der Mailversand mit diesen beiden Konfigurationswerten möglich ist. Ein Beispiel, wie man SMTP spricht, gibt die Wikipedia unter ebendiesem Stichwort. Alternativ zur Handarbeit wäre auch ein Ansprechen mit einem anderen Mailprogramm möglich. Aber die Handarbeit zeigt dir vielleicht genauere Meldungen an.

    Mercury habe ich gestartet.

    Du solltest nachschauen und testen, ob Mercury in der Lage ist, die Mail an den gewünschten Empfänger weiterzuleiten. Einige Provider nehmen keine oder ungern Mail von Einwahlzugängen an.

    dedlfix.

    1. Hi!

      Du solltest den Rückgabewert der Funktion mail() beachten. Ist er true oder false? var_dump() hilft beim Analysieren.

      Rückgabewert ist true.

      Du solltest mit phpinfo() nachschauen, wie SMTP und smtp_port eingestellt sind.

      Bei smtp habe ich nun den namen meines providers angegeben: smtp.googlemail.com
      Bei smtp_port: 465

      Du solltest mit einem Telnet-Programm prüfen, ob der Mailversand mit diesen beiden Konfigurationswerten möglich ist. Ein Beispiel, wie man SMTP spricht, gibt die Wikipedia unter ebendiesem Stichwort. Alternativ zur Handarbeit wäre auch ein Ansprechen mit einem anderen Mailprogramm möglich. Aber die Handarbeit zeigt dir vielleicht genauere Meldungen an.

      Was genau ist mit Handarbeit gemeint?

      Mercury habe ich gestartet.

      Du solltest nachschauen und testen, ob Mercury in der Lage ist, die Mail an den gewünschten Empfänger weiterzuleiten. Einige Provider nehmen keine oder ungern Mail von Einwahlzugängen an.

      Wie kann ich das testen?

      Danke für die Antwort.

      1. Hallo,

        Du solltest mit phpinfo() nachschauen, wie SMTP und smtp_port eingestellt sind.

        Bei smtp habe ich nun den namen meines providers angegeben: smtp.googlemail.com
        Bei smtp_port: 465

        das wird nicht funktionieren, weil Google Mail ganz bestimmt eine Authentifizierung verlangt, und das kann die mail-Funktion von PHP nicht bieten. Deswegen braucht man ja extra noch eine zusätzlichen Software (hier Mercury) als Relay.
        Btw, Port 465 für SMTP kommt mir "spanisch" vor. Sicher, dass das richtig ist?
        Üblich wäre 25 oder 587.

        Du solltest nachschauen und testen, ob Mercury in der Lage ist, die Mail an den gewünschten Empfänger weiterzuleiten. Einige Provider nehmen keine oder ungern Mail von Einwahlzugängen an.
        Wie kann ich das testen?

        Richte Mercury als SMTP-Relay (Smarthost) ein. Lass Mercury die Mails an den Server weiterleiten, den du oben genannt hast, ergänze dazu noch die erforderlichen Zugangsdaten. Trag dann in der php.ini wieder localhost und Port 25 ein, damit PHP die Mails zunächst an Mercury verschickt. Mercury als lokaler SMTP-Server verlangt nämlich keine Authentifizierung, deshalb geht das in Ordnung.

        So long,
         Martin

        --
        Drei Sachen vergesse ich immer wieder: Telefonnummern, Geburtstage und ... äääh ...
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. das wird nicht funktionieren, weil Google Mail ganz bestimmt eine Authentifizierung verlangt, und das kann die mail-Funktion von PHP nicht bieten. Deswegen braucht man ja extra noch eine zusätzlichen Software (hier Mercury) als Relay.
          Btw, Port 465 für SMTP kommt mir "spanisch" vor. Sicher, dass das richtig ist?
          Üblich wäre 25 oder 587.

          Port 465 wurde von Thunderbird eingetragen ^^ Ich bin noch etwas neu in diesem Gebiet.
          Ich habe dort einfach meine Email adresse und passwort eingegeben und der spuckte mir diese Daten aus.

          Richte Mercury als SMTP-Relay (Smarthost) ein. Lass Mercury die Mails an den Server weiterleiten, den du oben genannt hast, ergänze dazu noch die erforderlichen Zugangsdaten. Trag dann in der php.ini wieder localhost und Port 25 ein, damit PHP die Mails zunächst an Mercury verschickt. Mercury als lokaler SMTP-Server verlangt nämlich keine Authentifizierung, deshalb geht das in Ordnung.

          Okay ich habe die smtp daten in der php.ini auf 25 und localhost geändert.

          Nun habe ich gegoogelt, wie ich Mercury als smarthost einrichte und bin dabei auf dieses nette Tutorial gestoßen:
          http://www.derdualstudent.de/mercury-einrichten-xampp-mailserver.html

          Das Problem in meinem Fall ist, dass meine Änderungen leider nicht übernommen werden :-(

          Ich hacke unter configuration -> protocol modules etwas an, schließe die Maske, öffne es wieder und der Hacken ist wieder weg.
          Es scheint, als würde die mercury.ini Datei unangetastet bleiben. Hatte schon einmal jemand das problem?

          Danke im voraus.

          1. Hallo,

            Btw, Port 465 für SMTP kommt mir "spanisch" vor. Sicher, dass das richtig ist?
            Üblich wäre 25 oder 587.
            Port 465 wurde von Thunderbird eingetragen ^^ Ich bin noch etwas neu in diesem Gebiet.
            Ich habe dort einfach meine Email adresse und passwort eingegeben und der spuckte mir diese Daten aus.

            ah, jetzt wird's mir klar. Ja, Port 465 ist üblich für verschlüsselte SMTP-Verbindungen, habe ich eben nachgeschlagen. Okay.

            Okay ich habe die smtp daten in der php.ini auf 25 und localhost geändert.
            Nun habe ich gegoogelt, wie ich Mercury als smarthost einrichte und bin dabei auf dieses nette Tutorial gestoßen:
            http://www.derdualstudent.de/mercury-einrichten-xampp-mailserver.html

            Das sieht gut aus. Weckt Erinnerungen an die Zeit, als ich noch einen Windows-Server (mit Windows 2000) mit Mercury betrieben habe. ;-)
            Für deinen Anwendungsfall sollten also die Module MercuryS und MercuryC nötig sein. Nicht MercuryE - dieses Modul würde versuchen, die Mails direkt beim Mailserver des Empfängers abzuliefern, was der vermutlich verweigern wird.

            Das Problem in meinem Fall ist, dass meine Änderungen leider nicht übernommen werden :-(

            Das ist eigenartig. Hat Mercury bzw. XAMPP denn auch Schreibrechte in dem Verzeichnis, wo die ini-Datei liegen soll? Etwas anderes fällt mir als Erklärung momentan nicht ein.

            Ich hacke [...] und der Hacken ist wieder weg.

            *seufz* Wieso können so viele Leute nicht zwischen Haken und Hacken unterscheiden?

            So long,
             Martin

            --
            "Hier steht, deutsche Wissenschaftler hätten es im Experiment geschafft, die Lichtgeschwindigkeit auf wenige Zentimeter pro Sekunde zu verringern." - "Toll. Steht da auch, wie sie es gemacht haben?" - "Sie haben den Lichtstrahl durch eine Behörde geleitet."
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    2. Hallo,

      Du solltest den Rückgabewert der Funktion mail() beachten. Ist er true oder false? var_dump() hilft beim Analysieren.
      Du solltest mit phpinfo() nachschauen, wie SMTP und smtp_port eingestellt sind.

      wenn Mercury verwendet wird, sollte localhost und Port 25 okay sein. Allerdings muss Mercury dann auch tatsächlich als SMTP-Server konfiguriert sein. Was in XAMPP als Defaultkonfiguration eingestellt ist, weiß ich nicht. Wenn Mercury als Einzelprodukt installiert wird, ist jedenfalls *keines* der benötigten Module ausgewählt.

      Mercury habe ich gestartet.

      Das allein reicht eventuell nicht.

      Du solltest nachschauen und testen, ob Mercury in der Lage ist, die Mail an den gewünschten Empfänger weiterzuleiten. Einige Provider nehmen keine oder ungern Mail von Einwahlzugängen an.

      Das gilt dann, wenn man Mercury für die Zustellung bis zum Empfänger benutzen möchte.

      Deswegen sollte in Mercury nicht nur das Modul für den lokalen SMTP-Server eingebunden sein, sondern auch das für SMTP Relaying. Dann arbeitet Mercury als Smarthost und leitet Mails über den SMTP-Server des eigenen Providers weiter. Die Zugangsdaten (Mailserver des Anbieters, Benutzername und Passwort (falls SMTP-AUTH verwendet wird) müssen dann in Mercury auch eingetragen werden.

      So long,
       Martin

      --
      Soso, der Klügere gibt nach.
      Aber warum sollen sich immer nur die Dummen durchsetzen?  .oO(?)
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(