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