[ broker @ 21.08.2003. 10:38 ] @
Napravio sam web obrazac u kome posetilac treba da unese neke podatke i posalje jpg sliku. Podaci se salju na unapred zatadi email. Sve to mi lepo radi osim sto OutlookExpresss ne prepoznaje JPG attachment nego ga prikazuje kao kodiran tekst u okviru teksta poruke.

Kada poruku snimim u datoteku pa rucno dekodujem dobijem sipravnu sliku.

Da li je neko radio nesto slicno? Kako da izvedem da Outlook Express prikaze attachment kao attachment?

Evo kod koji koristim:

Code:

$fp = fopen($foto['tmp_name'], "r");
$file = fread($fp, $foto[size]);
$file = chunk_split(base64_encode($file));
$mail_body.="slika = $foto[name]\n\n";
         $mail_body.="=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n";
$mail_boundary = md5(uniqid(time()));
$mail_body.= "MIME-Version: 1.0\r\n";
$mail_body.= "Content-type: multipart/mixed; boundary=\"$mail_boundary\"\r\n\r\n";
$mail_body.= "This is a multi-part message in MIME format.\r\n\r\n";
$mail_body.= "--$mail_boundary\r\n";
$mail_body.= "Content-type:text/plain;charset=US-ASCII\r\n";
$mail_body.= "Content-transfer-encoding:7BIT\r\n\r\n";
$mail_body.= "--$mail_boundary\r\n";
$mail_body.= "Content-type:image/pjpeg;name=$foto[name]\r\n";
$mail_body.= "Content-transfer-encoding:base64\r\n\r\n";
$mail_body.= $file . "\r\n\r\n";
$mail_body.= "--$mail_boundary--";
$mail_body.= "\r\n";

// ispis na disk
// $file=fopen("prijava.txt","w");
// fwrite($file,$mail_body);
// fclose($file);
     
mail ($mail_to,$mail_subject,$mail_body,$mail_headers));


[ Jbyn4e @ 21.08.2003. 11:51 ] @
Gledajucio jedan mail vidim da ima header:
Citat:
Content-Type: image/jpeg;
name="slika.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="slika.jpg"


Dakle, probaj da dodas:

$mail_body.= "Content-Disposition: attachment;filename=$foto[name]\r\n";

posle

$mail_body.= "Content-transfer-encoding:base64\r\n\r\n";

P.S. I nadam se da ti je samo ovde typo na pjpeg:
$mail_body.= "Content-type:image/pjpeg;name=$foto[name]\r\n";

P.P.S. Ovo ce sliku prikazivati kao attachment, a ako hoces "inline" ne znam kako ide...
[ Goran Rakić @ 21.08.2003. 12:14 ] @
inline bi isto bilo, stim što bi druga mime "sekvenca" išla kao HTML poruka, gde je img src=neki link koji vodi na prvu sekvencu. Mada sam ja apsolutno protiv HTML email-a.
[ CONFIQ @ 21.08.2003. 13:01 ] @
Haam...
A zašto mail headere trpa u message parametru umesto header?

Odnosno, sintraxa valjda ide ovako:

mail('KOME','SUBJECT','PORUKA E MAILA','Headeri su ovde i ovde se stavlja attachment');

Ili ja nešto grešim?

~Say FiQ
[ Jbyn4e @ 21.08.2003. 13:45 ] @
Vidis, to nisam primetio... da, u pravu si za sintaksu ako se dobro secam, samo nisam siguran gde idu ti attach-i... valjda bi logicnije bilo u headeru...
[ leka @ 21.08.2003. 15:03 ] @
Brokeru, sto ne kroistis Lemos-ovu klasu za slanje MIME mejlova (ima podrsku i za multipart poruke/mejlove, sto tebi treba)?
Nalazi se na http://phpclasses.upperdesign.com najboljem PHP sajtu u Mlecnom Putu, a mozda i sire - mozda su i Andromedjani culi za taj sajt...
[ -zombie- @ 21.08.2003. 20:45 ] @
http://pear.php.net/package-search.php?pkg_name=mail
[ broker @ 24.08.2003. 10:04 ] @
Probao sam da pogeldam preporucene linkove ali jedan ne rad a ana drugom je sve nesto zbrljano...

No sredio sam skript... bili ste upravu.. uospte nisam primetio da sam ono sto treba da ide u zaglavlje poslao u telo poruke...

evo ispravan kod za mail attachment

Code:

$fp = fopen($foto['tmp_name'], "r");
$file = fread($fp, $foto[size]);
$file = chunk_split(base64_encode($file));
$mail_body.="slika = $foto[name]\n\n";
            $mail_body.="=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n";
$mail_boundary = md5(uniqid(time()));
$mail_headers.= "MIME-Version: 1.0\r\n";
$mail_headers.= "Content-type: multipart/mixed; boundary=\"$mail_boundary\"\r\n";
$mail_body.= "This is a multi-part message in MIME format.\r\n\r\n";
$mail_body.= "--$mail_boundary\r\n";
$mail_body.= "Content-type:text/plain;charset=US-ASCII\r\n";
$mail_body.= "Content-transfer-encoding:7BIT\r\n\r\n";
$mail_body.= "--$mail_boundary\r\n";
$mail_body.= "Content-type:image/jpeg;name=$foto[name]\r\n";
$mail_body.= "Content-transfer-encoding:base64\r\n";
$mail_body.= "Content-Disposition: attachment;filename=\"$foto[name]\"\r\n\r\n";
$mail_body.= $file . "\r\n\r\n";
$mail_body.= "--$mail_boundary--";
$mail_body.= "\r\n";

// ispis na disk
//$file=fopen("prijava.txt","w");
//fwrite($file,$mail_body);
//fclose($file);
// -------------
        
mail ($mail_to,$mail_subject,$mail_body,$mail_headers);

[ mdarko @ 24.08.2003. 19:07 ] @
Citat:
broker:
Napravio sam web obrazac u kome posetilac treba da unese neke podatke i posalje jpg sliku. Podaci se salju na unapred zatadi email. Sve to mi lepo radi osim sto OutlookExpresss ne prepoznaje JPG attachment nego ga prikazuje kao kodiran tekst



<?php

function sendmsg($to, $subject, $text, $from, $file, $type) {
$content = fread(fopen($file,"r"),filesize($file));
$content = chunk_split(base64_encode($content));
$uid = strtoupper(md5(uniqid(time())));
$name = basename($file);
$ip = getenv("REMOTE_ADDR");

$header = "From: $from\nReturn-Path: $from\nReply-To: $from\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=$uid\n";
$header .= "IPaddres : $ip\n";

$header .= "--$uid\n";
$header .= "Content-Type: text/plain\n";
$header .= "Content-Transfer-Encoding: 8bit\n\n";
$header .= "$text\n";

$header .= "--$uid\n";
$header .= "Content-Type: $type; name=\"$name\"\n";

$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"$name\"\n\n";
$header .= "$content\n";

$header .= "--$uid--";

mail($to, $subject, "", $header);

return true;
}

sendmsg("[email protected]","txt","txt2","[email protected]","slika.jpg","image/jpeg")


?>