Anhang Problem

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

  • Anhang Problem

    Hallo Forum,

    wieder einmal melde ich mich mit folgendem Problem. Ich hab hier ein Script, das ich von einem Freund bekommen hab. Es dient dazu Emails mit Alternativetext und Anhang zu versenden. Soweit klappt das auch, nur wenn ich mit Anhang versende, bekomm ich keine vernüftige Endung zustande, wenn ich eine Variable (siehe Inputfeld) zum auslesen angebe.
    Vielleicht kennt sich jemand damit aus. Bin da ein bisschen unerfahren, was dieses Header-Dingens angeht. Danke.

    PHP-Code:
    <?php 
    function validate_email($email){ 
    if ( !
    eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}$"$email) ) { 
    return 
    false
    } else { 
    return 
    true


    function 
    send_MIME_email$email ){ 
    if( empty(
    $email["recip"]) || empty($email["sender"]) || empty($email["subject"]) ) { 
    echo 
    "Empfänger, Absender und/oder Betreff wurde(n) nicht eingegeben!"
    return 
    false

    if( !
    validate_email($email["recip"]) || !validate_email($email["sender"]) ) { 
    echo 
    "Die Email Adressen von Sender und/oder Empfänger ist ungültig!"
    return 
    false

    if( empty(
    $email["content"]["plain"]) && empty($email["content"]["html"]) ) { 
    echo  
    "Es wurde weder Text-Inhalt noch HTML-Inhalt angegeben!"
    return 
    false

    $boundary strtoupper(md5(uniqid(time()))); 
    $mail_header "From: ".$email["sender"]; 
    $mail_header .= "\nMIME-Version: 1.0"
    $mail_header .= "\nContent-Type: multipart/alternative; boundary=".$boundary
    $mail_header .= "\n\nThis is a multi-part message in MIME format"
    if( !empty(
    $email["content"]["plain"]) ){ 
    $mail_header .= "\n--".$boundary
    $mail_header .= "\nContent-Type: text/plain"
    $mail_header .= "\nContent-Transfer-Encoding: 8bit"
    $mail_header .= "\n\n".$email["content"]["plain"]; 

    if( !empty(
    $email["content"]["html"]) ){ 
    $mail_header .= "\n--".$boundary
    $mail_header .= "\nContent-Type: text/html"
    $mail_header .= "\nContent-Transfer-Encoding: 8bit"
    $mail_header .= "\n\n".$email["content"]["html"]; 

    if( !empty(
    $email["attachment"]) ){ 
    $file $email["attachment"]; 
    $filename basename$file ); 
    if( @
    is_file($file) && @is_readable($file) ){ 
    $fp = @fopen$file"rb" ); 
    if( 
    $fp ){ 
    $buffer fread$fpfilesize($file) ); 
    $buffer base64_encode$buffer ); 
    $buffer chunk_split$buffer72 ); 
    fclose($fp); 
    $mail_header .= "\n--".$boundary
    $mail_header .= "\nContent-Type: application/octet-stream; name=\"".$filename."\n\n\""
    $mail_header .= "\nContent-Transfer-Encoding: base64"
    $mail_header .= "\nContent-Disposition: attachment; filename=\"".$filename."\n\n\""
    $mail_header .= "\n\n".$buffer
    } else { 
    echo 
    "Die Datei konnte nicht geöffnet werden!"


    }   
    if( !@
    mail($email["recip"],$email["subject"],"",$mail_header) ) { 
    return 
    false
    } else { 
    return 
    true


    $MIME_email = array(); 
    $MIME_email["recip"] = "$empfaenger"
    $MIME_email["sender"] = "$absend"
    $MIME_email["subject"] = "$betreff"
    $MIME_email["content"] = array(); 
    $MIME_email["content"]["plain"] = "$msg1"
    $MIME_email["content"]["html"] = "<HTML><HEAD><TITLE>Newsletter</TITLE></HEAD>" 
    ."<BODY bgcolor='#ffffff' text='#000000'>$msg</BODY></HTML>"
    $MIME_email["attachment"] = "$datei"
    if( !
    send_MIME_email$MIME_email ) ){ 
    echo 
    "Email konnte nicht versendet werden!<br><br>"
    } else { 
    echo 
    "Email wurde versandt!<br><br>"

    ?>
    Variable:
    PHP-Code:
    <input type=file name=datei

  • #2
    PHP-Code:
    echo "<pre>";
    print_r($_FILES);
    echo 
    "</pre>";
    exit(); 
    und ausgabe posten nachdem du nen file hochgeladen hast

    P.S.: Scrollen ist unkuhl, siehe http://www.php-resource.de/forum/sho...threadid=50454
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      ok, thx btw.

      Kommentar


      • #4
        Er zeigt mir dann folgendes an:

        PHP-Code:
        Array
        (
            [
        datei] => Array
                (
                    [
        name] => test.txt
                    
        [type] => text/plain
                    
        [tmp_name] => /srv/www/bla/blubb/phptmp/phpKbeUjX
                    
        [error] => 0
                    
        [size] => 200
                
        )


        Und genau da liegt mein Problem, das er mir immer nur den Tempname übermittelt und nicht den eigentlichen Namen der Datei. Hier wäre es jetzt
        phpKbeUjX .

        Kommentar


        • #5
          dann musst du irgendwo ein $_FILES['datei']['tmp_name'] durch ein $_FILES['datei']['name'] ersetzen...
          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
          var_dump(), print_r(), debug_backtrace und echo.
          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

          Kommentar


          • #6
            Nur leider hab ich so eine Zeile nicht!

            Kommentar


            • #7
              woher kommt denn $email["attachment"]?

              Kommentar


              • #8
                Ich hatte gedacht von hier

                PHP-Code:
                $MIME_email["attachment"] = "$datei"
                Bin total gerade

                Kommentar


                • #9
                  $file = $email["attachment"];

                  ist die zeile, die shurakai meinte.
                  ist auf jeden fall der debugging-ansatz.

                  Kommentar


                  • #10
                    Ich steh immer noch wie der Ochs vorm Berg.

                    Also:

                    Was die Variable $file macht ist mir klar, sie bereitet die hochgeladene Datei für die Email auf.
                    Nur was diese Zeile macht versteh ich nicht ganz.
                    PHP-Code:
                    $file $email["attachment"]; 
                    Sie wird doch hier weiterverarbeitet.

                    PHP-Code:
                    $MIME_email["attachment"] = "$datei"
                    // Im Original stand bei ="$datei"; das ="test.zip"; 
                    Und ich kann ja jetzt nicht $email["attachment"]; mit $datei ersetzten.

                    Kommentar


                    • #11
                      lass dir $file mit print_r und $filename mit echo ausgeben.

                      Kommentar


                      • #12
                        Hmmm,
                        da wird mir gar nichts ausgegeben, d.h. es ist in der Variable nix drin.
                        Dennoch erhalte ich als Emailanhang ne Datei die phpnQYlcr heisst.

                        Edit:
                        Wenn ich mir die Variable $datei ausgeben lasse, kommt phpnQYlcr raus.
                        Zuletzt geändert von e-arty; 27.04.2005, 15:42.

                        Kommentar


                        • #13
                          quatsch. wenn du nicht debuggst, macht es keiner für dich. dir wurde schon gesagt, wo das problem gefunden werden kann - gib dir mühe und setze die banalsten ansätze um.

                          mehr habe ich zu deinem problem nicht zu sagen. frage "deinen freund".

                          Kommentar


                          • #14
                            Trotzdem danke.

                            Kommentar

                            Lädt...
                            X