base64_encode und WAMP

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

  • base64_encode und WAMP

    Hallo zusammen,

    ich möchte nach wie vor eine Email mit Anhang auf meinem lokalen Intranet Server verschicken. Die Datei kommt aber zerschnossen an. Mittlerweile habe ich rausgefunden, dass die Funktion base64_encode() unter Win32 nicht in Ordnung ist. Ich habe also mittlerweile eine Datei base64.exe (gefunden bei http://www.fourmilab.ch/) installiert und versuche jetzt mit diesem Code...

    PHP-Code:

    function mybase64_encode($s) {
        
    $tmpfname $s .".tmp";
        
    $fp fopen($tmpfname"w+");
        if ( 
    $fp ) {
            
    fwrite ($fp$s);
            
    fclose($fp);
            
    exec("D:/Apache/Apache/bin/base64.exe -e " $tmpfname " " $tmpfname ".b64");
            
    $fp fopen($tmpfname ".b64""r");
                
    $contents fread($fp,filesize($tmpfname ".b64"));
            
    fclose($fp);
            
    unlink($tmpfname);
            
    unlink($tmpfname ".b64");
            return(
    $contents);
       }
    }

    $file "test.xls";
    $file_name "test.xls";
    $subject "Testmail";
    $from "Martin Medler <martin@medler.de>";
    $to "martin@medler.de";
    $message "Dies ist ein Test";
    $boundary strtoupper(md5(uniqid(time())));
    $mail_header  "From:" $from "\r\n";
    $mail_header .= "MIME-Version: 1.0\r\n";
    $mail_header .= "Content-Type: multipart/mixed; boundary=$boundary\r\n\r\n";
    $mail_header .= "This is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format\r\n";
    $mail_header .= "--$boundary\r\n";
    $mail_header .= "Content-Type: text/plain\r\n";
    $mail_header .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $mail_header .= "$message\r\n\r\n";

    mybase64_encode($file);

    $mail_header .= "--$boundary\r\n";
    $mail_header .= "Content-Type: application/x-excel; name=\"$file_name\"\r\n";
    $mail_header .= "Content-Transfer-Encoding: base64\r\n";
    $mail_header .= "Content-Disposition: attachment; filename=\"$file_name\"\r\n\r\n";
    $mail_header .= "$contents\r\n\r\n";
    $mail_header .= "--$boundary--";
    mail($to,$subject,"",$mail_header); 
    das ganze abzuschicken. Will aber auch nicht funktionieren. Ich vermute diesmal, dass die Umwandlung mit base64.exe nicht korrekt funktioniert. Kann mir jemand auf die Sprünge helfen? Es muss doch irgendwie möglich sein, unter WAMP eine Mail mit Binary Anhang zu senden...
    Angehängte Dateien

  • #2
    bleibt noch die Möglichkeit, die Funktion komplett selbst zu schreiben.

    Siehe dazu:
    http://www.freesoft.org/CIE/RFC/2065/56.htm (knappe Beschreibung des Algorithmus, englisch)
    http://www.zvon.org/tmRFC/RFC2228/Ou...hapter10.html, http://www.zvon.org/tmRFC/RFC2535/Output/chapter14.html (nochmal)

    http://www.scripting.com/midas/base64/source.html (C source code)

    EDIT:

    http://www.cis.ohio-state.edu/cgi-bi...1.html#sec-5.2 (die Definition)
    http://www.bytesandmore.de/rad/index...c05001.php</a> (nochmal C source, etwas übersichtlicher)
    http://www.activevb.de/tipps/vb6tipps/tipp0504.html (VB source)

    http://www.cpp-home.com/tutorial.php?102_1 (ein Tut mit C++ source)

    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Heißt? Datei öffnen, in einzelne Buchstaben zerlegen und dann in den jeweiligen Code wandeln?

      Kommentar


      • #4
        Im Tutorial wird beschrieben, wie du aus den Zeichen den binären base64-Code machst.
        Dann brauchst du nur noch ein Array mit den Werten aus der Tabelle, die du z.B. hier, hier und hier bekommst.

        Dann noch den Hinweis zum Padding mit dem Gleichheitszeichen befolgen:

        (1) 24 Bit Rest - 4 base64-Zeichen, kein Padding
        (2) 8 Bit Rest - 2*base 64 (das letzte Byte rechts mit Null-Bits aufgefüllt), zwei Gleichheitszeichen
        (3) 16 Bit Rest - 3*base 64, ein Gleichheitszeichen

        und fertig.
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Na, klingt ja total einfach. Ich werde mein Glück versuchen...

          Danke jedenfalls.

          Kommentar


          • #6
            Hi,
            versuche es mal mit dem folgenden Link, vielleicht hilft dir dies irgendwie weiter...

            http://www.php-resource.de/forum/sho...threadid=13577
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              Danke, da kam ich aber sozusagen her. Die ersten Bruchstücke des Skripts kamen von dem Artikel.

              Kommentar


              • #8
                Noch eine Frage: wenn ich dann meine eigene Funktion habe (lese mich gerade in die Thematik :-( ), muss ich das Ergebnis der Codierung (steht dann wohl in einer Variablen) in eine Date schreiben, die ich anhänge, oder hänge ich einfach die Variable an die Mail an?

                Kommentar

                Lädt...
                X