wysyłanie e-mail z załącznikiem

0

Witam,

Mam problem z formularzem w którym chcę wysyłać plik.
Mianowicie wiadomość dociera jednak załącznik jest w formie tekstu???
Poniżej kod z którego korzystam.

<?php
if(isset($_POST) && !empty($_POST)){ // Sprawdzenie czy jest POST
    //Sprawdzenie czy jest załącznik
    if(!empty($_FILES['file']['name'])){
        // Przechowanie zmiennych
        $file_name = $_FILES['file']['name'];
        $temp_name = $_FILES['file']['tmp_name'];
        $file_type = $_FILES['file']['type'];
        $eol = PHP_EOL;

        // rozszerzenie pliku
        $base = basename($file_name);
        $extension = substr($base, strlen($base)-4,strlen($base));

        // dozwolone pliki
        $allowed_extensions = array(".doc","docx",".pdf",".zip",".png",".jpg");

        // sprawdzenie czy plik ma dozwolone rozszerzenie
        if(in_array($extension, $allowed_extensions)){
            $from = $_POST['email'];
            $to = "[email protected]";
            $subject = "mój tytuł";
            $message = "wiadomość";

            $file = $temp_name;
            $content = chunk_split(base64_encode(file_get_contents($file)));
            $uid = md5(uniqid(time()));

            // standardowe naglówki e-mail
            $header = "From: ".$from.$eol;
            $header .= "Replay-to: ".$replayto.$eol;
            $header .= "MIME-Version: 1.0".$eol;

            //deklaracja różnych typów e-mail
            $header .= "Content-Type: multipart/mixed; boundry=\"".$uid."\"";
            $headre .= "This is a multi-part message in MIME format.".$eol;

            // częśc czystego tekstu
            $header .= "--".$uid.$eol;
            $header .= "Content-type:text/plain; charset=utf-8".$eol;
            $header .= "Content-transfer-Encoding:8bit".$eol;
            $header .= $message.$eol;

            // nagłówki zalącznika
            $header .= "--".$uid.$eol;
            $header .= "Content-Type: ".$file_type."; name=\"".$file_name."\"".$eol;
            $header .= "Content-Transfer-Encoding: base64".$eol;
            $header .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol; //?????
            $header .= $content."".$eol;

            // Wysyłanie wiadomości

            if (mail($to, $subject,"",$header)){
                echo "wysłano";
            }else{
                echo "błąd";
            }

        }else{
            echo "niedozwolony typ pliku";
        }
    }else{
        echo "Brak pliku";
    }
}

a tu część treści e-mail:

wiadomoED
--ba29d4bf9c37b4e4928985c027bba0bb
Content-Type: application/pdf; name="oska.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="oska.pdf"
JVBERi0xLjUKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29k
ZT4+CnN0cmVhbQp4nMV9W48tS1Ke8IBnaBDjGcDmzsI37Y20F5X3zFfLliXkF1jnjfETCFrIyxbj
h/n7zoisqvy+6Frdu3fXlnXmnOn4vsrIyHvkZWX+y2W5+nhZ5J/tj7+/P/3V35bLP/3fp3h1qV5+
9eQuf93//ecn/ezyt//9yaWYL664cO3/f2fxfz3dHvHe8p55Z3lH/NIMP4DJF8sX5qPlI/M2/oXi
z60yvwKTj5Yn/bka+1dg8jZ85fDFhi8cvtjwhcNna39m+7O3PJVPTsnwA9j5aPVH1h+d5Tl/g7U/
sP3elO8K7Lyz+eM4f2z9yly/sq0fmetHapn5Fdj5atK/ApNfLL8QX0z+r8DOZ5P/K7DzyeTPCux8
NPmzApO38UeOP9j4A8fvbfo9p987y1P+J2fyfwV2frH6F9a/WPsXsj82kz8rMHlnebIvVhu+cvjq
Lc/xF2P/Ckw+WT4xb/Vz/YjZlO8KTN7an9l+W78i16+Yo+Uj88Hy4SGfoti/5y+Ir/De8p75F/oD
88nyifli+UI8tl8AJm/jrxx/tfor6282/Y3T36z9jexPi7FvBSafLM/hnYk/Ocd8sTzZn7xJ/wpM
vlm+ER+y4UMmPlr9kfUna39i+1O1fCU+2/zJnD+2fiWuX8nWj8T1g8YHAHa+2fQ3Sn9eTPwrsPO2
/DKXX3bV8hR/9ib+Fdj5YOMPHH806V+ByRfLU/3JyepPrD81y1P9ybb8Mpdftv1L5v4lF5v+wumv
Nnzl8NXGXzn+au2vbH+z6W+cfls/sqkfzepvpJ/8WwAmHywfmI+Wj8wny6dXeejfD8cHCB95fuGv
S2k6MVkubkxIRoWaEToRcUCqVCGj+pfWoQSHtJrwQyFneLQd2nTY5fNEDn0VgB0mW2HSdGg1fFhM
+EAD6kGH6Th8sOHZYQ3W/uYpPDlEdQemQ2wdusm7YvglIB+j4WPwxC/xSH9opB/tV/07P/QDP/RP

Czy ktoś ma pomysł co jest nie tak?

Pozdrawiam

0

Są gotowe biblioteki do wysyłania emaili z PHP z załącznikami, chociażby to: https://github.com/PHPMailer/PHPMailer

Z tego co pamiętam kiedy sam kiedyś zrobiłem podobną bibliotekę, to są różne rzeczy które trzeba wziąć pod uwagę, i są opisane głównie w różnych RFC - np. maksymalna długość linii itd. Jeżeli chcesz to sam zrobić musisz pogrzebać w RFC albo innych bibliotekach które działają i podejrzeć.

Jeden błąd widzę na pewno:

ma być boundary a nie boundry, zaraz pod "// deklaracja różnych typów e-mail"

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0