Chtěla jsem se zeptat,mám v php MIME mail s přílohou,kde si ve formuláři vypním adresu odesílatele a příjemce,nahrát soubor a poslat.Mám ho zde na těchto stránkách,chybu v php mi to neukazuje ale soubor nejde bohužel odeslat.Jaké jsou možnosti problému?
Problém bude v tom, že funkce Mail() je na WZ dost radikálně omezena. Nevím, jak je to přesně ale tuším že: max. 100kB, max 10emailů /hod a max 10 příjemců /email.
viz Tom (manual.wz.cz)
viz cz.php.net/mail
'chybu v php mi to neukazuje'
Jakou to hlasi chybu? Mozna ten dotaz ted zni hloupe, ale...
Pokud mas v php spravne zapnute chybove hlaseni a zobrazujes chyby i funkce mail, pak to musi zahlasit chybu.
Jinymi slovy, asi nemas chyby povolene.
zkus pridat odkaz na soubor_php.txt
Povoleni PHP chyb zatim provadim zapisem techto 3 radku na zacatek scriptu:
@ini_set('error_reporting',E_ALL);
@ini_set('display_errors' ,'on');
error_reporting(E_ALL);
Funkce mail zobrazuje chyby jako
if (mail(...)) {echo 'byl odeslan'} else {echo 'nebyl odeslan';}
dalsi mozny pripad je zobrazit primo vysledek
$x = mail(...);
echo $x;
@mail() - toto je zpusob, jak rici funkci, aby chybu nezobrazila
Napada mne dalsich 1000 zpusobu, jak odeslat mail a hledat chybu, asi pripravim 1000 radkovou stranku na kterou budu pokazde odkazovat a reknu: Ano, vas problem je jiste zminen na teto strance, hledejte. Ja vas kod nemam :)
peta: "dalsi mozny pripad je zobrazit primo vysledek
$x = mail(...);
echo $x;"
Když už odkazuješ na php.net/mail - četl jsi návratové hodnoty funkce? Asi ne, viď...
Jinak gratuluju, další 20ti řádkový příspěvek s téměř nulovou vypovídající hodnotou :)
Asi jsem to špatně napsala,ale každej neni tak chytrej jako Ty Tome.Chybové hlášky mám povolené,chyba se mi nezobrazuje,ale vrací se mi hodnota false-E-mail se nepodařilo odeslat.Script:
<head>
<title>Untitled Document</title>
<meta name="GENERATOR" content="Easy Editor 2005">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
if ($akce == "Odeslat") {
if ($soubor_name == "") {
if (mail ("$prijemce", 'Zpráva z webu', "$dopis", "From: $odesilatel")) {
print "<h3>E-mail byl úspěšně odeslán!</h3>";
}
else {
print "<h3>E-mail se nepodařilo odeslat!</h3>";
}
}
else {
$envelope["from"] = "$odesilatel";
$envelope["to"] = "$prijemce";
$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";
Copy($soubor, $soubor_name);
$f = fopen ($soubor_name, "r");
$obsah = fread ($f, filesize($soubor_name));
fclose ($f);
$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = basename($soubor_name);
$part2["contents.data"] = "$obsah";
$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "text";
$part3["contents.data"] = $dopis;
$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;
$zprava = imap_mail_compose ($envelope, $body);
$pom = StrPos($zprava, "\r\n\r\n");
$hlavicka = SubStr($zprava, 0, $pom+2);
$telo = SubStr($zprava, $pom, StrLen($zprava) - $pom);
if (mail ("$prijemce", 'Zpráva z webu', $telo, $hlavicka)) {
print "<h3>E-mail byl úspěšně odeslán!</h3>";
}
else {
print "<h3>E-mail se nepodařilo odeslat!</h3>";
}
}
}
?>
<hr size=1 noshade>
<form action="send.php" method="post" enctype="multipart/form-data">
Odesílatel: <input type="text" name="odesilatel" value="" size=50 maxlenght=50><BR>
Příjemce: <input type="text" name="prijemce" value="" size=50 maxlenght=50><BR>
<br>
Text:<br>
<textarea name="dopis" cols="50" rows="10"></textarea><br>
Soubor: <input type="file" name="soubor"> <br>
<input type="submit" name="akce" value="Odeslat"><br>
</form>
</body>
Předem děkuji za odpovědi
Tak nevím - ale zkusil jsem poslat majlík a výsledek je: Obsah
Děkujeme za odeslání emailu.
A z čeho si to zkoušel poslat?Já ať dělám,co dělám,tak se mi to neodešle.A přišla Ti i příloha?
Pardon - nedorozumění :-) - použil jsem formulář v Kontakt.
Toho druhého formuláře jsem si předtím nevšiml - a nejde odeslat. Patrně je nějaká chyba v send.php - protože ten druhý formulář e-mail odesílá.
Používáš pravděpodobně stejný send.php pro odeslání mailu - tak zkus do toho formuláře Kontakt dodat tag Soubor: <input type="file" name="soubor"> a zkontroluj názvy proměnných. Jsem Lama - formulářům moc nehovím. :-)
agnes.kunst (anezkakunstarova.webz.cz)
pokud napise mail se nepodarilo odeslat, je problem s mailovou funkci, ted kde.
Lama ma jinak nastavene php, jemu to muze chodit. proto je dulezity odkaz na soubor
soubor.php (vysledek)
soubor_php.txt (zdroj)
nevsiml jsem si, kde naplnujes promenne $prijemce a pod?
zkus si vypsat:
echo "<br>prijemce=".$prijemce;
echo "<br>predmet=".$predmet;
echo "<br>telo=".$telo;
echo "<br>hlavicka=".$hlavicka;
if (mail ("$prijemce", 'Zpráva z webu', $telo, $hlavicka)) {
Pokud jsou tyto udaje spravne, pak se mail jako takovy ma odeslat.
Co se tyce priloh, to jsem nezkousel, ale vim, ze je treba v hlavicce zmenit typ na neco jineho nez je prednastaveny, viz cz.php.net/mail , tam bude popsan mail i s prilohou. Tusim, ze jeden z prikladu to dokonce resi jeste nejakou spesl knihovnou a ne mail funkci.
Už výš jsem psal, že jsem to posílal z jiného formuláře (má tam 2).
Z formuláře na stránce Kontakt mail poslat jde. Nevím jak bych měl mít "jinak nastavené php", abych já mohl e-mail poslat a někdo jiný ne... :-)
Tak,máte pravdu oba,opravdu jsem to měla špatně napojené,vůbec jsem si toho nevšimla.A ještě jsem přišla na to,že tu přílohu mám jaksi nedomyšlenou,ale ten hlavní důvod je vyřešen,jsem asi taky lama:-).No přes apache mi to bohužel nejde poslat vůbec,i když jsem do php.ini nastavila smtp poskytovatele mého připojení,tak to taky nevim,kde by mohla bejt chyba,ale to už na okraj...díky moc
na localhostu musis mit povolenou funkci mail a musi tam bezet mailovy klient (server). To je neco jako apache, jen se to jmenuje jinak a spousti se to zvlast. Tvuj poskytovatel to ma.