\r\n"; $header .= "Reply-To: ".$replyto."\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; $header .= "This is a multi-part message in MIME format.\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-type:text/plain; charset=utf-8\r\n"; $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; $header .= $message."\r\n\r\n"; $header .= "--".$uid."\r\n"; $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here $header .= "Content-Transfer-Encoding: base64\r\n"; $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; $header .= $content."\r\n\r\n"; $header .= "--".$uid."--"; if (mail($mailto, $subject, "", $header)) { echo "mail send ... OK"; // or use booleans here } else { echo "mail send ... ERROR!"; } } function dej_mime ($jmeno_souboru) { $pozice = strrpos($jmeno_souboru,'.'); $typ = substr( $jmeno_souboru, $pozice + 1 , strlen($jmeno_souboru) - $pozice); $mimetypes = array( 'doc' => 'application/msword', 'bin' => 'application/octet-stream', 'lha' => 'application/octet-stream', 'exe' => 'application/octet-stream', 'dll' => 'application/octet-stream', 'pdf' => 'application/pdf', 'eps' => 'application/postscript', 'ps' => 'application/postscript', 'xls' => 'application/vnd.ms-excel', 'ppt' => 'application/vnd.ms-powerpoint', 'swf' => 'application/x-shockwave-flash', 'tar' => 'application/x-tar', 'zip' => 'application/zip', 'mid' => 'audio/midi', 'midi' => 'audio/midi', 'mp2' => 'audio/mpeg', 'mp3' => 'audio/mpeg', 'm3u' => 'audio/x-mpegurl', 'bmp' => 'image/bmp', 'gif' => 'image/gif', 'ief' => 'image/ief', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'jpe' => 'image/jpeg', 'png' => 'image/png', 'tiff' => 'image/tiff', 'tif' => 'image/tiff', 'xbm' => 'image/x-xbitmap', 'wrl' => 'model/vrml', 'vrml' => 'model/vrml', 'css' => 'text/css', 'html' => 'text/html', 'htm' => 'text/html', 'asc' => 'text/plain', 'txt' => 'text/plain', 'rtx' => 'text/richtext', 'rtf' => 'text/rtf', 'sgml' => 'text/sgml', 'sgm' => 'text/sgml', 'xml' => 'text/xml', 'mpeg' => 'video/mpeg', 'mpg' => 'video/mpeg', 'mpe' => 'video/mpeg', 'qt' => 'video/quicktime', 'mov' => 'video/quicktime', 'avi' => 'video/x-msvideo', 'rar' => 'application/rar', ); return ( $mimetypes[$typ]); } function extra_mail ($to,$from,$subj,$body,$attach = "",$real_name = "") { // možná vám není jasný zápis v hlavičce funkce $real_name = "" // dělá následující: pokud parametr real_name nezadáme, doplní // to co je za rovnítkem. Vyhneme se tak problému se zadáváním nesprávného // počtu parametrů $header = "From: $from\n"; $header .= "MIME-version: 1.0\n"; $header .= "X-Mailer: PHP\n"; $header .= "Return-Path: <$from>\n"; $header .= "Reply-To: $from\n"; if ( !empty($attach) ) { // když máme nějakou přílohu // mime.php obsahuje funkci na zjištění MIME podle přípony souboru // include "inc/func/f_extra_mail_mime.php"; // když nezadáme $real_name, bude se příloha jmenovat stejně jako je // název, který vchází do funkce. To nemusí být vhodné například, // pokud fci voláme přímo po uploadu souboru (php uploadovaný soubor // ukládá do definovaného adresáře pod nahodně generovaným názvem // nebo v případě, že v proměnné $attach je jméno souboru i s cestou if ( empty($real_name) ) { $real_name = $attach; } // zjištění mime typu vznikající přílohy $type = dej_mime ($real_name); // načteme přílohu $f = fopen ($attach,"r"); if (!$f) { exit ("Nelze otevrit prilohu - koncime"); } $attach_obsah = fread ($f,filesize ($attach)); // překódujeme obsah přílohy do base64, je vhodné použít i fci chunk $attach_obsah = chunk_split (base64_encode ($attach_obsah)); fclose ($f); // připravíme hlavičky (příloha bude přímo v nich)!!! // vygenerování boundary (hranice), musí to být řetězec, který se nebude // vyskytovat nikde v textu. Dále vytvoříme úvod mailu, v kterém // určujeme, že mail má více částí vzájemně oddělených pomocí boundary $boundary = strtoupper(md5(uniqid("bound_"))); $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n\n"; $header .= "This is a multi-part message in MIME format.\n\n"; // hranicí oddělíme úvod $header .= "--" . $boundary . "\n"; // první část mailu obsahuje běžné tělo mailu, zakódované $header .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; //$header .= imap_8bit($body) . "\n\n"; $header .= $body . "\n\n"; // hranicí určíme, že následuje další část emailu $header .= "--" . $boundary . "\n"; // dalsi cast mailu - přidáme hlavičky na kódování, mime a přílohu $header .= "Content-Type: " . $type . "\n"; $header .= "Content-Transfer-Encoding: base64\n"; $header .= "Content-Disposition: attachment; filename=\"$real_name\"\n\n"; $header .= $attach_obsah . "\n\n"; // hranicí ukončíme mail (na konci ještě musí být --) $header .= "--" . $boundary . "--"; } else { // email bez přílohy. Pouze zakódujeme a přidáme příslušnou hlavičku $header .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; //$header .= imap_8bit($body) . "\n\n"; $header .= $body . "\n\n"; } // a vygenerované pošleme return (mail ($to,$subj,"",$header)); } ?> Madplant Garden
obrazok Konzultácia

Služby