Ankündigung

Einklappen
Keine Ankündigung bisher.

Upload-Formular sendet nur wirre Zeichenfolgen

Einklappen

Neue Werbung 2019

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

  • Upload-Formular sendet nur wirre Zeichenfolgen

    Hallo!

    Habe ein ganz dringendes Problem: Mit einem Formular soll eine Datei hochgeladen und als E-Mail-Anhang an eine fest definierte Mail-Adresse geschickt werden.
    Die Mail wird zwar verschickt, jedoch enthält diese keinen Anhang, nur eine irrsinnig lange Zeichenfolge am Ende. Vielleicht sieht jemand beim Drüberschauen woran es liegt. Bin mit meinem Latein / PHP am Ende

    Würde mich echt freuen, wenn mir jemand weiterhelfen könnte, vielen Dank im Voraus!

    Der Code in der upload.php:

    PHP-Code:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">

    <p><label for="firstname">Vorname:</label><br />
    <input name="firstname" id="firstname" size="45" type="text" value="<?php echo $firstname ?>" maxlength="40" /></p>

    <p><label for="surname">Nachname:</label><br />
    <input name="surname" id="surname" size="45" type="text" value="<?php echo $surname ?>" maxlength="40" /></p>

    <p><strong>Anhang:</strong> <input type="file" name="upload_attachment" id="upload_attachment" size="20" /></p>

    <p>
    <input name="action" type="hidden" id="action" value="1" />
    <input type="submit" id="submit" value="Senden" />
    </p>

    </form>
    Der Code in der upload.inc.php:

    PHP-Code:
    <?php

    if(array_key_exists("surname",$_POST))
    $surname=$_POST["surname"];
    if(
    array_key_exists("firstname",$_POST))
    $firstname=$_POST["firstname"];
    if(
    array_key_exists("upload_attachment",$_POST))
    $upload_attachment=$_POST["upload_attachment"];

    $redirect    "upload_sent.php";
    $sender      "Der Absender";
    $email01     "meinemailadresse@provider.de";
    $subject     "Mail mit Anhang";

    $body "Vorname: $firstname\nNachname: $surname";

    $tempname $_FILES['upload_attachment']['tmp_name'];
    $type $_FILES['upload_attachment']['type'];  
    $size $_FILES['upload_attachment']['size'];

    if (
    $action == "1"// when form is sent ...
    {

        
    $divider md5(uniqid(time()));
        
    $header "From: ".$email;
        
    $header .= "\n";
        
    $header .= "bcc: ".$email02;
        
    $header .= "\n";
        
    $header .= "MIME-Version: 1.0";
        
    $header .= "\n";
        
    $header .= "Content-Type: multipart/mixed; boundary=$divider";
        
    $header .= "\n\n";
        
    $header .= "This is a multi-part message in MIME format";
        
    $header .= "\n";
        
    $header .= "--$divider";
        
    $header .= "\n";
        
    $header .= "Content-Type: text/plain";
        
    $header .= "\n";
        
    $header .= "Content-Transfer-Encoding: 8bit";
        
    $header .= "\n\n";   
        
    $header .= $body;
        
    $header .= "--$divider";
        
    $header .= "\n";
        
    $header .= "Content-Type: ";
        
    $header .= $_FILES['upload_attachment']['type'];
        
    $header .= "; name=\"";
        
    $header .= $_FILES['upload_attachment']['name'];
        
    $header .= "\"\n";
        
    $header .= "Content-Transfer-Encoding: base64";
        
    $header .= "\n";
        
    $header .= "Content-Disposition: attachment; filename=\"";
        
    $header .= $_FILES['upload_attachment']['name'];
        
    $header .= "\"\n\n";
        
    $file_content fread(fopen($_FILES['upload_attachment']['tmp_name'], "r"), $_FILES['upload_attachment']['size']);
        
    $header .= chunk_split(base64_encode($file_content));
        
    $header .= "\n";
        
    $header .= "--$divider--";

        
    mail ($email01$subject""$header);
        
    header ("Location: ".$redirect);
        exit;
    }

    ?>

  • #2
    Du machst Dir das Leben wesentlich einfacher mit einer fertigen, getesteten Mailklasse.
    Zend Framework: Documentation
    PEAR :: Package :: Mail_Mime
    Swift Mailer - A free feature-rich PHP Mailer

    Kommentar


    • #3
      Habe mir die Mailklassen eben mal angeschaut. Leider weiß ich nicht, wie ich diese in mein Formular einbauen kann, ohne alles neu strukturieren zu müssen. Die zweite (PEAR Package: Mail_Mime) würde mich speziell interessieren. So richtig schlau werd ich aus der Dokumentation nicht.

      Kommentar


      • #4
        Hast Du Dir das Beispiel PEAR :: Manual :: Mail_Mime - Example angesehen?

        Kommentar


        • #5
          Das hatte ich noch nicht gesehen, danke. Habe es eben mal probiert, jedoch funktioniert es nicht so richtig bzw. mache ich irgendwas falsch. Ich habe mir die Mail-Klasse und die Mail_Mime-Klasse runtergeladen und auf dem Server gespeichert. In meinem Formular habe ich beim Absenden das Beispiel gespeichert (nur E-Mail-Adresse localhost... ausgetauscht).

          Das Ergebnis: Eine Mail kommt an, der Anhang ist jedoch ein Textdokument mit jeder Menge Zeichen.

          Kommentar

          Lädt...
          X