Mail attachment

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

  • Mail attachment

    Hi,

    habe ein kleines Problem.
    Wollte Mail mit Attachement über ein php script verschicken. Leider werden mir die Header Informationen als normaler Body Text angezeigt genauso wie die Binärdaten des Attachments, wenn ich die Mail erhalte.
    Sieht jemand meinen Fehler?:
    PHP-Code:
    [LEFT]public function sendAttachmentMail ($file){
    // meine Abschnittsmarke definieren
    $abschnittsmarke "<<<:".md5(uniqid(mt_rand(), 1));
    // Die Datei ordentlich encodieren und Splitten
    $data chunk_split(base64_encode (file_get_contents ($file)));
     
    // HEader Definition
    $header "From: ".$this->from." \r\n";
    $header.= "To: ".$this->to." \r\n";
    $header.= "MIME-Version: 1.0\r\n";
    $header.= "Content-Type: multipart/mixed;\r\n";
    $header.= "boundary=\"".$abschnittsmarke."\"\r\n";[/LEFT]
     
    [
    LEFT]// Body[/LEFT]
    $body "This is a multi-part message in MIME format.\r\n\r\n";
    $body .= "--".$abschnittsmarke."\r\n";
    $body .= "Content-Type: text/html; charset=iso-8859-1\r\n";
    $body .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $body .= $this->text."\r\n";
    $body .= "--".$abschnittsmarke."\r\n";
    $body .= "Content-Disposition: attachement;\n\r";
    $body .= "Content-Type: Application/Octet-Stream;
    name=\"
    $file\"\r\n";
    $body .= "$data\r\n";
    $body .= "--".$abschnittsmarke."\r\n";
     
    // Mailversand
     
    if (mail ($this->to,$this->subject,$body$header))
    return 
    true;
    return 
    false;[/LEFT]

    thx 4 help.
    Zuletzt geändert von sypr000; 15.05.2009, 15:28.

  • #2
    Wozu das Rad neu erfinden. Nutz doch einfach den phpmailer. Dann musst du nich frickeln.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Es geht mir hier ja darum, die Materie zu verstehen. Und das klappt am besten wenn man es mal selbst versucht

      Also du siehst spontan keinen Fehler?

      Kommentar


      • #4
        Aus dem Manual:
        Note: If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.
        Schon versucht?

        Kommentar


        • #5
          Setz boundary mal hinter den Content-Type
          Bevor du die Daten ausgibst, solltest du noch

          Content-Transfer-Encoding: base64

          und

          Content-Description:

          setzen.
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Testweise würde ich es erstmal ganz ohne Attachments probieren, also kein Multipart sondern plain text. Dann Stück für Stück aufbauen.

            Kommentar


            • #7
              Zitat von sypr000 Beitrag anzeigen
              Leider werden mir die Header Informationen als normaler Body Text angezeigt
              Alle - oder ab einem bestimmten?

              Das erste auftreten eines doppelten \r\n beendet den Header - also da ggf. irgendwas falsch?

              PHP-Code:
              $body .= "Content-Disposition: attachement;\n\r";
              $body .= "Content-Type: Application/Octet-Stream;
              name=\"
              $file\"\r\n"
              Also da ist der Zeilenumbruch hinter der ersten Zeile zumindest mal falsch.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                PHP-Code:
                 
                 
                This is a multi
                -part message in MIME format.
                --<<<:
                ee43a5f8ad82d0956972588d92969ee7
                Content
                -Typetext/htmlcharset=iso-8859-1
                Content
                -Transfer-Encoding7bit
                BLABLALBA
                hier ist mein TEXT
                 
                LALALALA
                 
                --<<<:ee43a5f8ad82d0956972588d92969ee7
                Content
                -Dispositionattachement;
                Content-TypeApplication/Octet-Stream;
                name="./../praktikant/196e24b93ebdbd0f0de7df1f12abd820.doc"
                Content-Transfer-Encodingbase64
                0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7
                /CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAA
                EAAAOAAAAAEAAAD
                +////AAAAADUAAAD/////////////////////////////////////////////////////////////
                ////////////////////////////////////////////////////////////////////////////////////
                /////////////////////////AAAAADUAAAD///////////////////////////////////////////////////
                //////////////////////////////////////////////CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAA//////////
                /////////////EAAAOAAAAAEAAAD/////////////////////////////CQAGAAAAAAAAAAAAAAABAAAANgAAAA
                ////////////////////////////////////////////////////////////////////////////////////////////////
                ////////////AAACQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAAAADUAAAD////////////////////////////
                pcEABUAJBAAA+BK/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAAAEAEAAAAAAAAQAQAAEAE
                AAAAAAAAQAQAAAAAAABABAAAAAAAAEAEAAAAAAAAQAQAABQAAAAAAAAAAAAAAFQEAAAAAAAAGAsA
                AAAAAAAYCwAAAAAAABgLAAA4AAAAUAsAACwAAAB8CwAALAAAAFQEAAAAAAAAaBEAACoBAAC0CwAA
                FgAAAMoLAAAAAAAAy
                //////////////////////////AAAAAAAAAAAAAAAIgAAAAAAAAAAAAAAAAAIgAAAA
                gsAAAAAAA////DKCwAAAAAA////AMoLAAAAAAAAYQ0AAAAAAABhDQAAAAAAAGENAAAA
                AAAA5xAAAAIAAADpEAAQAAAAGENAAAAAAAAYQ0AAAAAAABhDQAAAAAAAA0RAAAAAAAA 
                Das ist das was ich als Plain text erhalte, Bin gerade dabei die Anregungen auszuprobieren. Danke


                ... ich versteh nicht wie man damit etwas anfangen könnte?
                das ist nur ein schnipsel der 100kb die versendet wurden
                Zuletzt geändert von sypr000; 15.05.2009, 17:52.

                Kommentar


                • #9
                  Ist das das gesamte Dokument? Dir ist klar, dass man das rauskopieren und dekodieren könnte? Ich hoffe, es sind keine vertraulichen Informationen! Ansonsten bearbeite deinen letzten Beitrag und nimm es raus.

                  Kommentar


                  • #10
                    nein das ist nicht das gesamte Dokument, aber das man ein base64 encodiertes dokument wieder entschlüsseln kann ist mir wohl klar

                    Kommentar


                    • #11
                      also ich komme der Sache schon etwas näher:

                      X-Amavis-Alert: BAD HEADER MIME error: error: multipart boundary is missing, or contains CR or LF

                      Kommentar


                      • #12
                        Zitat von sypr000 Beitrag anzeigen
                        X-Amavis-Alert: BAD HEADER MIME error: error: multipart boundary is missing, or contains CR or LF
                        Na ja, du hast ja auch bereits Text vor dem ersten Auftauchen der boundary stehen:
                        Code:
                         
                        [color=red]This is a multi-part message in MIME format.[/color]
                        --<<<:ee43a5f8ad82d0956972588d92969ee7
                        Content-Type: text/html; charset=iso-8859-1
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Selbst wenn ich das weg mache krieg ich noch im Header:
                          MIME-Version: 1.0
                          boundary="<<<:44fdc6e9cddd3e5483a1b0aa7901b6d3"

                          d.h. es fehlt wieder content type multipart, obwohl ichs ja eigentlich an mail () übergebe ....
                          PHP-Code:
                          $header"MIME-Version: 1.0\n";
                          $header.= "Content-Type: multipart/mixed;\n";
                          $header.= "boundary=\"".$abschnittsmarke."\"\n"
                          hmmm ich weiß auchnich weiter :/

                          Kommentar


                          • #14
                            Wo sind denn jetzt in dem Code die \r geblieben?
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              nachdem es mit nich funktioniert hat, hab ich sie halt mal raus gemacht .
                              kannst du mir ansatz punkte geben wo ich noch gucken könnte, oder was ich posten soll, damit mir geholfen werden könnte? besten dank

                              Kommentar

                              Lädt...
                              X