PHP Funktion mail() mit MAMP

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von koli.bri, 13.06.2006.

  1. koli.bri

    koli.bri Thread Starter Gast

    Hallo.

    Ich hab zwei Fragen zu der Mailfunktion von PHP.
    1.) Wann gehen die Mails raus? Ich hab in einem Testscript eine Mail versand, und kurz danach die Mails abgerufen. Nichts kam an. Es könnte theorethisch an einen Tippfehler liegen.

    2.) Ich hab die Mail wie ein HTML-Dokument aufgebaut, also mit allem drum und dran:
    HTML:
    <html><head><title>Titel, aber nicht der Mailheader</title></head>
      <body>
        <h1>Ueberschrift</h1>
        <p>Und das hier ist eine Mail</p>
      </body>
    </html>
    An meine Firmenadresse wurde die Mail geschickt, jedoch kam sie als HTML-Quelltext an. also statt den HTML Kram zu formatieren, hat der alle HTML-Elemente angezeigt, als würde ich mir den Quelltext angucken...

    Kann das an Lotus Notes liegen? Oder hab ich da einen Fehler gemacht?

    Bitte um Aufklärung, und evenutell mehr Informationen zum aufbau einer Mail...

    danke und gruß
    Lukas
     
  2. Galanos

    Galanos MacUser Mitglied

    Beiträge:
    624
    Zustimmungen:
    23
    Registriert seit:
    19.12.2005
  3. koli.bri

    koli.bri Thread Starter Gast

    Also wird es wohl daran liegen, dass den Header nicht gesetzt habe, und der die Mail als plain/text gesendet hat?
    Naja, Mails sind mir noch ein Rätsel, mal gucken, was es noch alles dazu zu wossen gibt..

    danke für den Hinweis

    gruß
    Lukas
     
  4. Galanos

    Galanos MacUser Mitglied

    Beiträge:
    624
    Zustimmungen:
    23
    Registriert seit:
    19.12.2005
    Klingt plausibel :) Aber gut, dass du mit dem Problem aufgetaucht bist, haette mich die Tage auch drum kuemmern muessen – so kann ich schon mal 5 Minuten Arbeit sparen ;)
     
  5. koli.bri

    koli.bri Thread Starter Gast

    5 Minuten... Die stell ich in Rechnung!!!:cool:
    Ich denke, 5 Euro sollten drin sein :D
    :music: :drum:
     
  6. Rajmund

    Rajmund MacUser Mitglied

    Beiträge:
    539
    Zustimmungen:
    58
    Registriert seit:
    15.04.2006
    Hallo,

    bei einer einfachen Mail wird Text einfachso "plain" gesandt. Um Mails mit HTML-Inhalt und/oder Dateianhängen zu versenden, muß man sich mit MIME (spezielles Mail-Format) beschäftigen.
    Ich hab das mal ein bißchen gemacht und dabei ist folgende kleine Klasse herausgekommen:
    Code:
    
    <?php
    
    class multipartmail {
         var $Header;
         var $absender;
         var $subject;
         var $Trenner;
         
         function multipartmail($absender,$subject) {
           $this->absender = $absender;
           $this->subject = $subject;
           $this->Trenner = md5(uniqid(time()));
           $this->Header = "MIME-Version: 1.0\n".
               "Content-Type: multipart/mixed; boundary=$this->Trenner\n\n".
               "This is a multi-part message in MIME format\n";
         }
         
         function addpart($contenttype, $encoding, $content, $name="") {
           $this->Header .= "--$this->Trenner\n".
                      "Content-Type: $contenttype";
           if ($name != "") $this->Header .= "; name=$name";
           $this->Header .= "\n";
           $this->Header .= "Content-Transfer-Encoding: $encoding\n";
           if ($name != "") $this->Header .= "Content-Disposition: attachment; filename=$name\n";
           $this->Header .= "\n";
           switch ($encoding) {
           case "8bit":     $this->Header .= $content; break;
           case "base64":   $this->Header .= chunk_split(base64_encode($content)); break;
           default: die("Fehler in multipartmail: Angabe der Kodierung fehlt.");
           }
           $this->Header .= "\n";
         }
         
         function sendto($empfaenger) {
           $newheader = "From: $this->absender\n".
                        $this->Header.
                        "--$this->Trenner--";
           mail($empfaenger, $this->subject, "", $newheader);
         }
    }
    
    
    
    
    $Dateiname = "irgendeineDatei";
    $Dateiinhalt = fread(fopen($Dateiname, "r"), filesize($Dateiname));
    $themail = new multipartmail("absender@mailserver.de", "Eine Mail der Klasse");
    $themail->addpart("text/plain", "8bit", "Dies ist eine Anhangsmail mit MEINER Funktion");
    $themail->addpart("text/plain", "base64", $Dateiinhalt, "irgendeinedatei");
    $themail->addpart("text/html", "base64", "ob auch <b>HTML</b> geht?");
    $themail->sendto("adressat@mailserver.de");
    ?>
    
    
    Ich hab die vor ein paar Monaten das letzte Mal benutzt und heute nicht nochmal getestet. Probier' mal, ob dir der Code helfen kann. Ich hoffe, das meiste ist selbsterklärend. Ansonsten halt nochmal fragen. Es gibt garantiert schon fertige Bibliotheken, die funktionsumfangreicher sind, aber ich hab mich halt selbst damit mal beschäftigen wollen.
    So könnte man eben auch alternative Inhalte anbieten (Text sowohl in HTML- als auch plain-Format) - das muß ich erst noch realisieren.

    Zur Versanddauer. Das dürfte nichts PHP zu tun haben. Bei meinen Mailexperimenten, die ich mit verschiedenen Skriptsprachen gemacht habe, war da jedenfalls kein Zusammenhang zu erkennen. Das ist wie beim Versenden mit dem normalen Emailprogramm. Mal dauert's länger, mal ist die Mail gleich da. Je nach Größe der Mail und Verkehrslage auf der Datenautobahn....

    Viel Spaß!
    Rajmund
     
  7. koli.bri

    koli.bri Thread Starter Gast

    Danke für die Mühe die alten Sachen noch mal rauszukramen.
    Ich denke, ich werde damit klarkommen, auch wenn sich beim ersten durchlesen ein par Fragen aufkommen. Aber bevor ich die stelle, beschäftige ich mich mal damit.

    Zudem, endlich mal ein Beispiel für OOP, das mir auch den Sinn von OOP zeigt. Bisher hab ich mich immer gefragt, wozu das gut ist. Vielen lieben Dank, ich denke, die Fünf Euro, die ich vorhin in Rechnung gestellt habe, kann ich direkt dir geben ^^ ;)

    gruß
    Luas
     
  8. Rajmund

    Rajmund MacUser Mitglied

    Beiträge:
    539
    Zustimmungen:
    58
    Registriert seit:
    15.04.2006
    Prima! Mit den fünf Euro in Flüssigkeit umgewandelt können wir dann auf mein MacBook anstoßen, welches heut oder morgen bei mir ankommt. Ist langsam nicht mehr auszuhalten mit dieser Kiste hier....
     
  9. Manjo

    Manjo MacUser Mitglied

    Beiträge:
    903
    Zustimmungen:
    22
    Registriert seit:
    25.07.2005
    Bei dem zeitlichen Versatz vom Senden von Mails über php und MAMP habe ich auch keine Regelmäßigkeit feststellen können. Manchmal gehen sie gleich weg, manchmal erst später. Warum auch immer. Auf nem richtigen Webserver gehen sie jedenfalls immer gleich raus!
     
  10. me-myself-and-i

    me-myself-and-i MacUser Mitglied

    Beiträge:
    182
    Zustimmungen:
    2
    Registriert seit:
    24.08.2005
    Ich hatte schon das Problem, dass gewisse Mailserver eine Mail aus der PHP Funktion mail() geblockt haben, wenn sie nicht alle geforderten Standards enthalten haben.
    Ich würde es mal mit der Klasse von Rajmund versuchen...

    Viel glück :)
     
Die Seite wird geladen...

Diese Seite empfehlen