mailform anhang problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mailform anhang problem

    Hallo zusammen,

    Ich bin neu hier, das ist mein erster Eintrag... und komme gleich schon mit einem Problem. Ich kenne mich mit PHP noch nicht gut aus und habe ein paar Snippets zusammengefügt. Es handelt sich hier um ein Kontaktformular, bei dem ein Anhang mitgesendet wird. Das Problem ist, dass ich weder einen Text noch den Anhang sehe, wenn ich die E-Mail öffne. Der grösse nach zu urteilen, ist aber ein Anhang mitgesendet worden.

    Wenn ich mir die E-Mail im Quelltext ansehe, sehe ich die anderen Textinformationen, die ich mitgesendet habe. Im E-Mail sehe ich aber nichts, kann auch nichts markieren. Also alles ist verschwunden.

    Hier der Snippet:

    Code:
        public function sendWerbung($firma,$name,$strasse,$plz_ort,$branche,$telefon,$mobile,$skype,$webseite,$slogan,$nachricht,$type) {
            $email= $this->impetusEmail;
            
            $xtra = "From: $email \r\n";
            $xtra .= "MIME-Version: 1.0";
            $xtra .= "\n";
            $xtra .= "Content-Type: multipart/mixed; boundary=$Trenner";
            $xtra .= "\n\n";
            $xtra .= "This is a multi-part message in MIME format";
            $xtra .= "\n";
            $xtra .= "Content-Type: multipart/mixed";
            $xtra .= "\n";
            $xtra .= "Content-Transfer-Encoding: 8bit"; 
            
            //$xtra = "From: $verbemail\r\n";
            //$xtra .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
            //$xtra .= "X-Mailer: PHP ". phpversion();
            $ret=false;
            // Mail versenden mit verbesserungsvorschlaege
            
    
    
            $mailtext .= "Content-Type: ";
            $mailtext .= $_FILES['Anhang']['type'];
            $mailtext .= "; name=";
            $mailtext .= $_FILES['Anhang']['name'];
            $mailtext .= "\n";
            $mailtext .= "Content-Transfer-Encoding: base64";
            $mailtext .= "\n";
            $mailtext .= "Content-Disposition: attachment; filename=";
            $mailtext .= $_FILES['Anhang']['name'];
            $Dateiinhalt = fread(fopen($_FILES['Anhang']['tmp_name'], "r"), $_FILES['Anhang']['size']);
            $mailtext .= chunk_split(base64_encode($Dateiinhalt));
                $mailtext  .= "<b>Daten der Registration</b> <br><br>";
                $mailtext  .= "Firma: $firma <br>";
                $mailtext  .= "Name: $name <br>";
                $mailtext  .= "Strasse: $strasse <br>";
                $mailtext  .= "PLZ/Ort: $plz_ort <br>";
                $mailtext  .= "Branche: $branche <br>";
                $mailtext  .= "E-Mail: $email <br>";
                $mailtext  .= "Telefon: $telefon <br>";
                $mailtext  .= "Mobile: $mobile <br>";
                $mailtext  .= "Skype: $skype <br>";
                $mailtext  .= "Webseite: $webseite <br><br><br>";
                $mailtext  .= "<b>Formualrangaben</b> <br><br>";
                $mailtext  .= "Anschrift: $firma - $strasse, FL/CH/AT-$plz_ort  <br>";
                $mailtext  .= "Slogan: $slogan <br>";
            $mailtext .= htmlentities($nachricht, ENT_QUOTES);
            
            
            $subject = "IMPETUS Formular: Werbung";
            
            $headers="from: $email";
            //mail(an,betreff,nachricht,xtra)
            $ret = mail($email,$subject,$mailtext,$xtra);    
            return $ret;
        }
    Ich hoffe, dass mir jemand weiter helfen kann.

    mfg
    dissy

  • #2
    Wofür definierst du ein Boundary, wenn du das nicht benutzt?
    Deine Header sonst sind auch etwas falsch. Nur ein Beispiel:
    $xtra .= "Content-Type: multipart/mixed; boundary=$Trenner";
    $xtra .= "\n\n";
    $xtra .= "This is a multi-part message in MIME format"; <-- was macht das da?
    $xtra .= "\n";
    $xtra .= "Content-Type: multipart/mixed"; <-- Wofür ist das hier?
    $xtra .= "\n";
    $xtra .= "Content-Transfer-Encoding: 8bit"; <-- das kommt früher

    Kommentar


    • #3
      Stimmt, den Boundary brauche ich nicht.
      Die anderen Daten habe ich von dieser Vorlage übernommen: Webmaster Resource: Tipps & Tricks: PHP: Kontaktformular inkl. Dateianhang mit PHP

      Werde mich einmal ein bisschen über Mail header informieren müssen...

      mfg
      dissy

      Kommentar


      • #4
        Doch, den Boundary brauchst du. Ich werde dir, sobald ich einmal etwas länger Zeit habe es etwas genauer anzuschauen noch kurz eine Lösung reinschreiben, aber die hast du bis dahin wohl schon wenn du dir anschaust wie die Header aussehen. Wenn du nichts gutes findest, dann schau doch mal die Header deiner eigenen E-Mails an.

        Den folgenden Code kannst du zu einem grossen Teil übernehmen.
        Es sollte alles korrekt sein, aber es ist nicht getestet. Alle \n musst du evtl. durch \r\n ersetzen. Das hängt von deinem Server ab. Die E-Mail-Adressen FROM und TO musst du noch ändern. Den Namen des Anhangs und was angehängt wird sowie dessen MIME-Type auch.
        PHP-Code:
        $boundary md5(uniqid(rand(), 1));
        $header ="MIME-Version: 1.0\n";
        $header.="From: test@test.test\n";
        $header.="Content-Type: multipart/mixed; boundary=" $boundary "\n";

        $msg="\n--" $boundary "\n";

        $msg.="Content-Type: text/html;charset=iso-8859-1\n";
        $msg.="Content-Transfer-Encoding: base64\n\n";
        $msg.= chunk_split(base64_encode("
        <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"
         \"http://www.w3.org/TR/REC-html40/loose.dtd\">
        <html><head>
        <title>Testmail mit Anhang</title>
        </head><body>
        <b>Das ist ein Testmail mit Anhang.</b>
        </body></html>\n"
        ));

        $msg.="\n--" $boundary "\n";

        $msg.="Content-Type: image/gif; name=attachmenttest.gif\n";
        $msg.="Content-Transfer-Encoding: base64\n";
        $msg.="Content-Disposition:attachment;filename=testanhang.gif\n\n";
        $f=fopen("emailtestimage.gif","rb");
        $msg.=chunk_split(base64_encode(fread($f,filesize("emailtestimage.gif"))));
        fclose($f);

        $msg.="\n--" $boundary "\n";

        mail("test@test.test""Testmail mit Anhangs"$msg$header); 
        Zuletzt geändert von jmc; 03.06.2009, 00:26. Grund: [EDIT 1] E-Mail mixed text/html und image/gif als attachement

        Kommentar

        Lädt...
        X