Autor Zpráva
radas
Profil *
Zdravím,
snažim si udělat formulař, který zvládne posílani přilohy, bohužel na email mi chodi jen zakodovany text a pořad

nevím kde je problém
jo jasně uričtě bych mohl použít hotové řešení, jenže bych se to chtěl naučit a pochopit, proto se s tím patlam :(
třeba někdo uvidi, v čem je problém

$uid     = strtoupper(md5(uniqid(time())));
$nazev ="nazev webu";
$www="wwww.xxxxxxx.cz";
function zakoduj($text) 
{
return "=?utf-8?B?".base64_encode($text)."?=";
}

function odesli_mail($komu, $predmet, $telo,$kontakt) 
{
global $uid;
global $nazev;
global $www;
$hlavicka = "MIME-Version: 1.0\n";
$hlavicka.= "Content-Type: multipart/mixed;\n\t";
$hlavicka .= "boundary=".'"'."$uid".'"'."\n";
$hlavicka.= "From: $nazev <$kontakt>\n";
$hlavicka.= "Reply-To: $kontakt\n";
$body = $telo;
$body.= "<br /><br />přejeme hezký den!<br />
<b>".$nazev."</b><br />
 <b>".$www." </b>";
$predmet = zakoduj($predmet);
mail($komu, $predmet, $telo, $hlavicka);
}

   $email_message = "This is a multi-part message in MIME format.\n";
   $email_message .= "\n--$uid\n";
   $email_message .= "Content-Type: text/plain;\n\t";
   $email_message .= "charset=\"utf-8\"\n";
   $email_message .= "Content-Transfer-Encoding: quoted-printable\n\n";
   $email_message .= "\n".$_POST['zprava']."\n\n";

if (isset ($_FILES['obr']['name'])) {
for ($n = 0; $n <= count($_FILES['obr']['name']); $n++) {
$pripona =strtolower( pathinfo($_FILES['obr']['name'][$n], PATHINFO_EXTENSION));
$jmeno=explode(".",$_FILES['obr']['name'][$n]);
//zbavuji se české diakritiky a nechtěných znaku...
$nazev=StrTr($jmeno[0],$prevodni_tabulka);
$soubor =  $nazev. ".". $pripona;
move_uploaded_file($_FILES['obr']['tmp_name'][$n],  "files/".$soubor);
//zde je vše ok ...
	
		$fileatt = "files/".$soubor; // Cesta k souboru                 
		$fileatt_type = $_FILES['obr']['type'][$n]; // Typ souboru
		$fileatt_name = $_FILES["obr"]["name"][$n]; // Název souboru připojeného k e-mailu v příloze
		$file = fopen($fileatt,'rb');
		$data = fread($file,filesize($fileatt));
		$data = chunk_split(base64_encode($data)); 

        	$email_message .= "--$uid\n" . 
               "Content-Type: $fileatt_type; name=\"$fileatt_name\"\r\n" . 
               "Content-Transfer-Encoding: base64\n\n" . 
               "Content-Disposition: attachment; filename=\"$fileatt_name\"\n" . 
                $data . "\n\n"."--$uid--\n";
        	fclose($file);
}	
}
$email_message.= "--$uid--\n";

odesli_mail("komu@domana.cz", $_POST['predmet'], $email_message,"odkoho@domena.cz");	

Davex
Profil
Je tam nějaký zmatek v koncích řádku. Zkus to změnit takto (u 2. a 3. odebrat jedno \r a \n, a u 4. jeden přidat:
$email_message .= "--$uid\n" .
  "Content-Type: $fileatt_type; name=\"$fileatt_name\"\n" .
  "Content-Transfer-Encoding: base64\n" .
  "Content-Disposition: attachment; filename=\"$fileatt_name\"\n\n" .
radas
Profil *
Davex:
děkuji, už to pošle jeden soubor ale ještě to nedokaže poslat dva a více souboru :( vždy jen posledni z vybranych...
Alphard
Profil
[#3] radas
Dejte sem raději zdroják té zprávy. Ten rozsypaný čaj base64 samozřejmě zkraťte.
radas
Profil *
Alphard:
myslite jako hlavičku e-mailu?

X-Spam-Status: score=0
X-Esetresult: clean
X-Spam-Status: score=0
Received: ***
Received: by*
id EB992B0200C; Wed, 29 Dec 2010 23:59:10 +0100 (CET)
To: xxx@xxxx.cz
Subject: =?iso-8859-2?Q?=E8ern=FD=20k=F9=F2=20b=EC=BEel=20po=20zelen=E9=20lo=F9ce?=
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="8F516D2BD85266CB4583E3036600268D"
From: xxx@xxxx.cz
Reply-To: xxx@xxxx.cz
Message-Id: <20101229225910.EB992B0200C@****>
Date: Wed, 29 Dec 2010 23:59:10 +0100 (CET)
X-Smtpd: 1.2.14@16206
X-Session: 45
X-Country: CZ


to je vše co jsem získal z toho emailu...
jen se divim že tam právě není base64 ..
radas
Profil *
upload funguje, soubor se objevi ve složce, ale k emailu se nepřipoji..za to když pošlu mail bez přilohy tak se mi tam automaticky přida prázdny soubor..už s tim laboruji a nevím kde by byla chyba:(
Davex
Profil
Konec těla zprávy "--$uid--\n" dej jen za poslední vložený soubor a ne za každý,
radas
Profil *
Davex:
děkuji Vám pomohlo to..

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0