Diskuze: Odesílání mailů?

PHP PHP Odesílání mailů? American English version English version

Avatar
relycanx
Člen
Avatar
relycanx:

Už v minulosti jsem jentak ze zvědavosti zkoušel přes php poslat mail, nepodařilo se. Teď jsem zkoušel další dva vzorové kódy, ale zase nic. V čem je prosím chyba? tento script je nefunkční, na můj mail nic nepřijde.

<?php
$prijemce = "relycanx@seznam.cz";
$predmet = "Předmět";
$text = "text zprávy";
$odesilatel = "relycanx@seznam.cz";
if (@mail($prijemce, $odesilatel, $predmet, $text)){
echo ("E-mail byl odeslán..");
}
else {
echo ("Nepodařilo se e-mail odeslat, ověřte zda jste připojeni k síti..");
}
?>
Editováno 12.10.2013 11:11
 
Odpovědět 12.10.2013 11:09
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na relycanx
David Čápka:

Kdybys zkusil vzorové kódy z devbooku, tak ti to bude fungovat. http://www.itnetwork.cz/…ovy-formular

Nahoru Odpovědět 12.10.2013 11:38
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na relycanx
Daniel Vítek:

Proč je před tím mail ten zavináč ?

 
Nahoru Odpovědět 12.10.2013 13:38
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na relycanx
Daniel Vítek:

No ono to je celý blbě, funkce mail je takto:

mail($pro,$predmet,$text,$parametry);

takže by to bylo nějak takto:

if(mail($prijemce, $predmet, $text,'From: ' . $odesilatel)){
echo ("E-mail byl odeslán..");}
Editováno 12.10.2013 13:42
 
Nahoru Odpovědět 12.10.2013 13:40
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
David Čápka:

Zavináč potlačuje errory, což je největší hloupost, co může programátor udělat. Funkce mail je také zastaralá, neumí UTFko.

Nahoru Odpovědět 12.10.2013 13:43
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na relycanx
Petr Nymsa:

Je to špatně, a navíc máš tam docela perličku :D

Nepodařilo se e-mail odeslat, ověřte zda jste připojeni k síti..

To nezní jako nejlepší věta jak říct uživateli že vyplnil něco špatně :D. Jak by mu server mohl odpovědět, když není připojen ? :`

Editováno 12.10.2013 13:49
Nahoru Odpovědět 12.10.2013 13:49
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Zavináč jen potlačuje výpis errorů do výstupu, ale chybové hlášení je stále možné zachytit a zpracovat. Používání zavináče tedy není hloupost, ale nutnost, pokud potřebuji chybu zpracovat jinak než systémově. Hloupost je to pouze tehdy, když po zavináči ty chyby nezpracuji.

Funkce mail() nepotřebuje zpracovat UTF, pokud zprávu převedu do sedmibitového kódování.

Nahoru Odpovědět 12.10.2013 13:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Můžeš uvést reálný příklad, kdy používáš zavináč?

Nahoru Odpovědět 12.10.2013 14:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Například když parsuji nevalidní HTML nebo XML, když potřebuji zachytit a ošetřit require, když pracuji se soubory a funkce, které s nimi pracují, by jinak způsobily zhroucení skriptu,...

Nahoru Odpovědět 12.10.2013 14:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Myslel jsem, že uvedeš něco konkrétního. Nevím, co děláš se zavináčem u require, zaprvé ti to pohltí chyby ve skriptu, který načítáš a zadruhé máme include.

Nahoru Odpovědět 12.10.2013 14:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:
<?php
$a = array();
$b = @$a['xx'];
echo ">$b<";
$db = @new PDO('pgsql:dbname=pokus', NULL, NULL, $dbAttr);
$doc = new DOMDocument();
@$doc->load('http://www.itnetwork.cz/rss_generator_all.php');
Nahoru Odpovědět  -1 12.10.2013 14:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ten kód mi přijde nepřehledný a hlavně jde napsat bez zavináčů. Raději použiji isset nebo file_exists (který se cachuje) než tohle. Začátečníci by o tom neměli vůbec vědět.

Nahoru Odpovědět 12.10.2013 14:51
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Proto jsem to sem nechtěl dávat. Máš, co jsi chtěl.

file_exist() problém nijak neřeší.

Nahoru Odpovědět  +1 12.10.2013 14:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Existuje pár funkcí, kde potřeba jsou. Ale je jich velmi málo a je třeba je brát jako bypass, ne jako nějakou techniku a používat je ke čtení z neinicializovaných proměnných, jako jsi zde předvedl. Nebo dokonce u require, to jen dokazuje, jak si to člověk potom neuhlídá a nedomyslí, co to vlastně dělá.

Nahoru Odpovědět 12.10.2013 14:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
relycanx
Člen
Avatar
Odpovídá na David Čápka
relycanx:

no asi takhle - dřív mi nešlo na rozum, proč se pořád ten pitomý mail nechce odeslat, tak jsem na netu hledal takovéhle zřejmě nesmyslné a zastaralé scripty, ale já hlavně nevěděl, že z xamppu nejde maily bez úpravy konfiguračního souboru vůbec odesílat, takže teď jsem to otestoval na svém webu, jak funguje ten skript z tvého článku a super, vše konečně šlape jak má :)

 
Nahoru Odpovědět 12.10.2013 15:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Tak se předveď, jak bys řešil ekvivalent k tomuto:

$doc = new DOMDocument();
@$doc->load('http://www.itnetwork.cz/rss_generator_all.php');

Tady ti file_exist() nepomůže.

Nahoru Odpovědět  +1 12.10.2013 15:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Tak znovu, asi jsi to nečetl: "Existuje pár funkcí, kde potřeba jsou. Ale je jich velmi málo a je třeba je brát jako bypass, ne jako nějakou techniku a používat je ke čtení z neinicializovaných proměnných, jako jsi zde předvedl. Nebo dokonce u require, to jen dokazuje, jak si to člověk potom neuhlídá a nedomyslí, co to vlastně dělá."

Nahoru Odpovědět 12.10.2013 17:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Příště po mně nechtěj, abych sem psal konkrétní příklady, kdy se dá s výhodou využít zavináč. A nesnaž se používat file_exist() tam, kde mají být výjimky.

Nahoru Odpovědět 12.10.2013 17:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ty hlavně nepoužívej zavináč tam, kde být nemá :)

Nahoru Odpovědět  +1 12.10.2013 17:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

A ty mi hlavně nekecej do toho, jak mám programovat :)

Nahoru Odpovědět  -2 12.10.2013 17:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.