Attachment - no boundary

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Attachment - no boundary

    ja servus, gemeinde..

    ich hab ein problem. in meinem php-skript hab ich versucht eine email mit attchment zu senden. ich bekomme zwar die email, aber mit dem inhalt:

    no boundary parameter

    was hab ich denn übersehen, bin schon betriebsblind:

    php:

    function sendApplication( $id )
    {
    global $database, $mosConfig_absolute_path, $mosConfig_live_site, $option, $cfgjl, $mainframe, $my, $Itemid;

    $row = new mosJobPosting( $database );
    $row->load( $id );

    if ( !$row->id )
    {
    mosRedirect( "$mosConfig_live_site/index.php?option=$option&task=error&msg=" . _JL_NOSUCHJOB );
    }
    else
    {
    $tmplvars = get_object_vars( $row );
    foreach ( $_REQUEST as $k => $v )
    {
    $tmplvars["req_$k"] = $v;
    }

    $tmpl = new mxTemplate( "$mosConfig_absolute_path/components/com_jobline/templates/{$cfgjl['template']}" );
    if ( $tmpl->setTemplate( "applicationemail" ) )
    {
    // store the file information to variables for easier access
    $tmp_name= $_FILES['attach']['tmp_name'];
    $type = $_FILES['attach']['type'];
    $name = $_FILES['attach']['name'];
    $size = $_FILES['attach']['size'];
    $error = $_FILES['attach']['error'];

    $message = '';
    $mime_boundary = '';

    $tmpl->setVars( $tmplvars );
    $tmpl->parseTemplate();
    $message = $tmpl->getOutput();

    //echo '<br>--<br> 1.' . $message;
    // if the upload succeded, the file will exist
    if ( file_exists($tmp_name) )
    {
    //echo '<br>--<br> 2.' . $message;
    // generate a random string to be used as the boundary marker
    $mime_boundary = "<<<--==Multipart_Boundary_x".md5(mt_rand())."x";

    // check to make sure that it is an uploaded file and not a system file
    if( is_uploaded_file($tmp_name) )
    {
    //echo '<br>--<br> 3.' . $message;
    $message .= "nn Attachment : $name\n";

    // open the file for a binary read
    $file = fopen( $tmp_name,'rb' );

    // read the file content into a variable
    $data = fread( $file,filesize($tmp_name) );

    // close the file
    fclose( $file );

    // now we encode it and split it into acceptable length lines
    $data = chunk_split( base64_encode($data) );
    }





    // next, we'll build the message body
    // note that we insert two dashes in front of the
    // MIME boundary when we use it

    $message = "This is a multi-part message in MIME format.\n" . "--{$mime_boundary}\n" .
    "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n" .
    "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";


    // now we'll insert a boundary to indicate we're starting the attachment
    // we have to specify the content type, file name, and disposition as
    // an attachment, then add the file content and set another boundary to
    // indicate that the end of the file has been reached
    if( $data )
    {
    $message .= "--{$mime_boundary}\n" . "Content-Type: {$type};\n" .
    "name=\"{$name}\"\n" .
    "Content-Disposition: attachment;\n" .
    "filename=\"{$name}\"\n" .
    "Content-Transfer-Encoding: base64\n\n" .

    $data . "\n\n";
    }
    $message .= "--{$mime_boundary}--\n";
    }

    //echo '<br>--<br> <b>4.</b>' . $message;

    //$Replyto = '';

    // function
    //sendEmail( $email, $subject, $message, $fromname, $fromemail, $replyto, $mime_boundary );
    sendEmail( $cfgjl['mailfromaddress'], _JL_APPLICATION_SUBJECT, $message, $cfgjl['mailfromname'], $cfgjl['mailfromaddress'], $Replyto, $mime_boundary);

    mosRedirect( "$mosConfig_live_site/index.php?option=$option&Itemid=$Itemid&task=thankyou&id=$id" );
    }
    else
    {
    showError( _JL_ERRORSETTMPL . ": applicationemail" );
    }

    }

    }



    und send email

    function sendEmail( $email, $subject, $message, $fromname='', $fromemail='', $replyto='', $mime_boundary='')
    {
    /*if ( function_exists( "mosMail" ) )
    {
    mosMail($fromemail, $fromname, $email, $subject, $message);
    }
    else
    {*/
    // generate a random string to be used as the boundary marker

    $headers = "";
    if ( trim( $fromemail ) )
    {
    $headers = "From: $fromname <$fromemail>\r\n";
    }

    if ( trim( $replyto ) )
    {
    $headers .= "Reply-To: <$replyto>\r\n";
    }


    $headers .= "X-Priority: 3\r\n";
    $headers .= "X-MSMail-Priority: Low\r\n";
    $headers .= "X-Mailer: PHP 4.x \r\n";

    if( $mime_boundary )
    {
    $headers .= "MIME-Version: 1.0\r\n".
    "Content-Type: multipart/mixed;\n\t boundary=\"$mime_boundary";
    }

    @mail($email, $subject, $message, $headers);
    //}
    }


    schon was entdeckt???

    vielen dank

  • #2
    boundary := 0*69<bchars> bcharsnospace
    bchars := bcharsnospace / " "
    bcharsnospace := DIGIT / ALPHA / "’" / "(" / ")" / "+" / "_"
    / "," / "-" / "." / "/" / ":" / "=" / "?"


    die <<< in der boundary sind also nicht erlaubt.

    Kommentar


    • #3
      irgendwer müsste auch noch etwas von der Art

      Content-Type: multipart/mixed;
      boundary="deine Boundary"

      schreiben, falls es dein sendEMail() nicht macht.

      Kommentar


      • #4
        ???

        danke phoenix, aber was genau beschreibt dein erstes post und wo muss das hin?
        bin relativ neu bei php

        in meinem application-form hab multipart schon eingebaut...

        Kommentar


        • #5
          anstatt

          $mime_boundary = "<<<--==Multipart_Boundary_x".md5(mt_rand())."x";


          sollst du

          $mime_boundary = "--==Multipart_Boundary_x".md5(mt_rand())."x";

          schreiben. Das war der Sinn des ersten post.

          NB wegen der vielen banned-Werbung ist das alles etwas aufwändiger.

          Kommentar


          • #6
            und dann habe ich noch gesehen, und wahrscheinlicher liegt es daran:

            "Content-Type: multipart/mixed;\n\t boundary=\"$mime_boundary";

            sollte sein

            "Content-Type: multipart/mixed;\n\t boundary=\"$mime_boundary\"";

            Viel Glück.

            Kommentar


            • #7
              fast

              vielen dank. ich habe das eingebaut und siehe da...
              ich bekomme eine email mit anhang.

              aber leider erkennt er den anhang nicht als datei.

              ich bekomme ein code-wirrwarr angezeigt..
              hier nur der erste teil:

              name="smartgeräte.pdf"
              Content-Disposition: attachment;
              filename="smartgeräte.pdf"
              Content-Transfer-Encoding: base64

              JVBERi0xLjQNJeLjz9MNCjQ3NzAgMCBvYmo8PC9IWzEwMjAgOTc1XS9MaW5lYXJpemVkIDEvRSAx
              ODMwMi9MIDM1NDQ2NC9OIDI1L08gNDc3NC9UIDI1OTAxNT4+DWVuZG9iag0gICAgICAgICAgICAg
              DQp4cmVmDQo0NzcwIDM1DQowMDAwMDAwMDE2IDAwMDAwIG4NCjAwMDAwMDIyNTcgMDAwMDAgbg0K
              MDAwMDAwMTAyMCAwMDAwMCBuDQowMDAwMDAyNTczIDAwMDAwIG4NCjAwMDAwMDI3MTUgMDAwMDAg
              bg0KMDAwMDAwMzEzMiAwMDAwMCBuDQowMDAwMDAzMjE0IDAwMDAwIG4NCjAwMDAwMDM4MTAgMDAw
              MDAgbg0KMDAwMDAwNDIzNyAwMDAwMCBuDQowMDAwMDA0Njc4IDAwMDAwIG4NCjAwMDAwMDUxMzUg
              MDAwMDAgbg0KMDAwMDAwNTQwMCAwMDAwMCBuDQowMDAwMDA2NTMxIDAwMDAwIG4NCjAwMDAwMDY4

              und so weiter

              Kommentar


              • #8
                Re: fast

                Original geschrieben von peter_lustig
                Content-Transfer-Encoding: base64
                Und was sagt dir das?

                Dass die Daten base64-kodiert sind (wie für Dateianhänge in EMail absolut üblich) - und du sie dekodieren musst, wenn du was vernünftiges haben willst.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  danke für den ratschlag. soweit bin ich auch schon gekommen.
                  ich würde gern wissen, wie ich das bewerkstellige...

                  Kommentar


                  • #10
                    Original geschrieben von peter_lustig
                    danke für den ratschlag. soweit bin ich auch schon gekommen.
                    Dann sag das doch bitte gleich.
                    ich würde gern wissen, wie ich das bewerkstellige...
                    Und ich würde gerne wissen, was du unternommen hast, um dieses Problem zu lösen.

                    Hast du schon mal nach einer Funktion gesucht, mit der man das vielleicht machen könnte?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      ich bin hier um fragen zu stellen und nicht um mich zu rechtfertigen.
                      du solltest lieber irgend jemand zum chatten auffordern.

                      Kommentar


                      • #12
                        Chat Connection *closed*
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar

                        Lädt...
                        X