
PHP kód-formulář na odeslání emailu s přílohou
Ahoj mám takový problém. Zde je kód php:
<?php
$nl="\r\n"; //řádky
if ($akce == "Odeslat") { /* Bylo stisknuto tlacitko Odeslat */
if (!is_uploaded_file($HTTP_POST_FILES ['soubor'] ['tmp_name'])) { /* nebyla vybrana priloha, posleme e-mail obycejne */
$simple_head="Content-Type: text/html; charset=\"utf-8\"; format=flowed $nl";
$simple_head.="From: <robot@xyz.cz>";
$simple_head.="MIME-Version: 1.0";
if (@mail ("$prijemce", 'Inezrát998521', "$dopis", "$simple_head")) {
echo "<h3>E-mail byl úspěšně odeslán!</h3>";
}
else {
echo "<h3>E-mail se nepodařilo odeslat!</h3>";
}
}
else { /* priloha byla vybrana */
/* nejprve sestrojime hlavicky */
$envelope["from"] = "$odesilatel";
$envelope["to"] = "$prijemce";
$envelope["cc"] = "kopie@xyz.net";
/* nyni sestrojime nekolik casti dopisu */
/* 1. cast - uvodni, tou rekneme, ze dopis ma vice casti s ruznymi typy dat */
$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";
/* 2. cast - do dopisu vlozime zadany text */
$part2["type"] = TYPETEXT;
$part2["subtype"] = "html";
$part2["charset"] = "utf-8";
$part2["description"] = "text";
$part2["contents.data"] = $dopis."\n\n\n\t";
/* 3. cast - do dopisu pripojime prilohu */
/* nejprve zadany soubor nacteme */
$f = fopen ($HTTP_POST_FILES ['soubor'] ['tmp_name'], "r");
// otevren pro cteni
$obsah = fread ($f,$HTTP_POST_FILES['soubor']['size']);
// nacteme obsah do promenne
fclose ($f);
// zjistíme typ souboru
$subtyp=StrChr($HTTP_POST_FILES ['soubor'] ['type'],"/");
$subtyp=SubStr($subtyp,1,StrLen($subtyp)-1);
$part3["type"] = TYPEIMAGE;
$part3["encoding"] = ENCBINARY;
$part3["subtype"] = $subtyp."; name=\"".$HTTP_POST_FILES ['soubor'] ['name']."\"";
$part3["disposition"] = "inline; filename = \"".$HTTP_POST_FILES ['soubor'] ['name']."\"";
$part3["description"] = "filename = \"".$HTTP_POST_FILES ['soubor'] ['name']."\"";
$part3["contents.data"] = $obsah;
/* Cely dopis ulozime do pole body */
$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;
/* celou zpravu vytvorime a ulozime do promenne $zprava: */
$zprava = imap_mail_compose ($envelope, $body);
/* drive nez posleme zpravu funkci Mail musime rozdelit
zvlast hlavicku a zvlast telo: */
$pom = StrPos($zprava, "\r\n\r\n");
$hlavicka = SubStr($zprava, 0, $pom+2);
$telo = SubStr($zprava, $pom, StrLen($zprava) - $pom);
if (mail ("", 'Objednávka', $telo, $hlavicka)) {
echo "<h3>E-mail s přílohou byl úspěšně odeslán!</h3>";
}
else {
echo "<h3>E-mail s přílohou se nepodařilo odeslat!</h3>";
}
}
}
?>
Funkční je na form.html nebo send.php
Pokud dám odeslat třeba exe soubor, tak mi to pošle jenom kus a nejde spustit. Pokud pošlu obrázek, stáhne se ho jenom půlka a zbytek ne. Co udělat, aby to spolehlivě šlo? Díky za odpovědi.
Nikdo neví?
Udělej si stránku s výpisem phpinfo() a dej sem odkaz... Bude zřejmě nastaveno omezení (upload_max_filesize, memory_limit nebo podobně) na WZ.
Jakou veliksot mají ty neúplně uploadované soubory?
asi 42kb
Ale teď už jsem našel pro mne lepší formulář (chci si udělat bazárek) viz form.php , ale to taky nejde a nevím proč
Tak jsem to vyřešil trochu po svém (skoro vlastní kód). Tak po víkendu by mohl být bazárek hotový
Na bazar bych si udělal buď kategorii ve fóru, jako to máme na bubákově
http://forum.bubakov.net/viewforum.php?f=24&sid=7b0 d9bf3ff9a60b8a89bbbf573f55149
(výhoda - nemusíš se o nic starat, lidi si to tam dávají sami)
nebo přímo použil Quick Cart
bazar.html
(výhoda - vypadá to profi)
Vývoj zrychlil, bude to tam asi zítra. Zatím můžete "ochutnat" pilotní verzi (ještě doladím design) na index.php
Hezké.