Mailer

Mám problém s mailerom. Slúži na odosielanie e-mailov s prílohou. Používa funkciu imap_mail_compose (http://www.php.net/, search: imap_mail_compose). Má tú chybu, že k názvu prílohy pridáva príponu .dat Dáta sú nepoškodené, sú v poriadku, ale pre lajika sa nedajú otvoriť.

Adresu má: http://www.pikosoft.wz.cz/email/email.php
stejnej problem mam taky, uz jsem to psal do sekce php, ale nikdo mi neporadil - je to jen v tom enctype-binary - ale nikdo nerekl, co tam mam napsat misto toho aby to fungovalo tak jak ma...
Dnes som sa s tým celý deň zaoberal a prišiel som na riešenie.

Je to trošku zložitejšie. Radšej ti dám zdrojáč:

<?
$envelope["from"]="$from";
$envelope["to"]="$to";
$envelope["cc"]="$cc";
$envelope["bcc"]="$bcc";
$envelope["subject"]="$subject";

$head["type"]=TYPEMULTIPART;
$head["subtype"]="mixed";

$message["type"]=TYPETEXT;
$message["encoding"]=ENCBASE64;
$message["subtype"]="html";
$message["description"]="Text správy";
$message["contents.data"]= base64_encode($msg) . "\n\n\n";

$fp=fopen($file,"r");
$contents=fread($fp,filesize($file));
fclose($fp);
$attachment["type"]=TYPEAPPLICATION;
$attachment["encoding"]=ENCBINARY; //Tuto problém nie je, ale aj ja som si to najprv myslel
$attachment["subtype"]="octet-stream";
$attachment["contents.data"]=$contents;

$body[1]=$head;
$body[2]=$message;
$body[3]=$atachment;

$email_output = imap_mail_compose($envelope,$body);

// Mail máme hotový, ale nie celkom správny.
// Treba niektoré hlavičky doplniť alebo zmeniť, rozobrať na $header a $telo a tak odoslať.

$exp_path = explode("\\",$filename);
$filename = $exp_path[count($exp_path)-1]; // Príkaz basename mi nejak nefunguje :-(, tak som si to spravil inak.

$header_end = strpos($email_output, "\r\n\r\n");
$header = substr($email_output,0,$header_end);
$header .= "; charset=windows-1250\n"; //Diakritika v hlavičke
$header .= "X-Priority: $priority\n";
$header .= "X-Mailer: PikoSoft PHP Mailer (http://www.pikosoft.wz.cz/)\n\n";
$telo = substr($email_output,$header_end,strlen($email_output));
$telo = str_replace("US-ASCII","windows-1250",$telo); // Diakritika
$telo = str_replace("Content-Type: APPLICATION/octet-stream","Content-Type: APPLICATION/octet-stream\nContent-Disposition: attachment; filename=\"$filename\"",$telo); //<<-- TOTO SI VŠIMNI!

$result = mail("","",$telo,$header);
echo $result ? "E-mail bol odoslaný." : "E-mail sa nepodarilo odoslať.";
?>

POZNÁMKA: $file je súbor odoslaný pomocou formulára a $filename je názov a cesta k súboru.
Miesto $body[3]=$atachment; má byť $body[3]=$attachment; !