PHP meil s přílohou...
Napsal: sob 11. úno 2012, 02:03
Dobrý den, potřebuji v php udělat odesílání meilu s přílohou (pdf)...našel jsem si návod zde: http://www.builder.cz/art/web/emailsprilohou.html
ale bohužel to nefunguje-při pokusu o odeslání mi to vytíží procesor na 50% a zablokuje php (vertrigoserv), takže ho musím restartovat...
Normální odeslání meilu bez přílohy funguje...
Jediný co jsem v návodu změnil bylo pevné nadefinování mime a odstraněny některé podmínky...níže dávám kod:
Toto nefunguje:
Moc prosím o pomoc...díky...
ale bohužel to nefunguje-při pokusu o odeslání mi to vytíží procesor na 50% a zablokuje php (vertrigoserv), takže ho musím restartovat...
Normální odeslání meilu bez přílohy funguje...
Jediný co jsem v návodu změnil bylo pevné nadefinování mime a odstraněny některé podmínky...níže dávám kod:
Toto nefunguje:
Kód: Vybrat vše
function poslatMeil($from,$to,$subject,$zprava,$attach){
$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";
$real_name = "pozvanka.pdf";
// zjištění mime typu vznikající přílohy
$type = 'application/pdf';
// 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: base64\n\n";
$header .= base64_encode($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";
$predmet = "=?utf-8?B?".base64_encode($predmet)."?=";
// hranicí ukončíme mail (na konci ještě musí být --)
$header .= "--" . $boundary . "--";
mail ($to,$predmet,"",$header);
}