Jak poslat e-mail prostřednictvím PHP - část 1.

 2012-03-13 00:00:00
 Dmitry Burobin

Dnes napíšeme skript pro odesílaní e-mailů prostřednictvím PHP.

Série článků:
1) Jak poslat e-mail prostřednictvím PHP - část 1.
2) Posíláme obrázek a soubor prostřednictvím PHP - část 2.

První příklad - bez ověření vstupních dat.

<?php
// jestli tlačítko Odeslat bylo zmačknuté
if($_POST['submit']) {
        
// $_POST['title'] data z inputu Předmět, trim() - odstraňuje zbytečné 
        //mezery a řádky, htmlspecialchars() - převádí specifické symboly 
        //do HTML entit, proto, aby jsme zabránili nejjednoduššímu pokusu o 
        //hacknutí stránky a substr($_POST['title'], 0, 1000) - 
        //omezujeme text do 1000 znaků.  
        //Pro proměnnou $_POST['mess'] uděláme to samé.
        
$title substr(htmlspecialchars(trim($_POST['title'])), 01000);
        
$mess =  substr(htmlspecialchars(trim($_POST['mess'])), 01000000);
        
// $to - příjemce emailu
        
$to 'test@test.cz';
        
// $from - odesílatel
        
$from='test@test.cz';
        
// funkce, která odesíla email.
        
if(mail($to$title$mess'From:'.$from)){
        echo 
'Děkujeme! Váš dopis byl odeslán.';
    }else{
        echo 
'Dopis nebyl odeslán';
    }

?>
<form action="" method=post>

<
p>Nějaký text <p>
              <
div align="center">
              
Předmět:<br />
              <
input type="text" name="title" size="40"><br />
              
Zprava:<br />
              <
textarea name="mess" rows="10" cols="40"></textarea>
              <
br />
              <
input type="submit" value="Odeslat" name="submit"></div>
</
form

Jestli to zkoušite na lokálním serveru, tak bych Vám doporučoval nainstalovat Test Mail Server Tool, tento program je určen pro přijem emailů, konfigurace je velice jednoduchá, akorat ověřte zda je nastavený 25 port a ukažte cestu, kam se mají ukládát data. Pak otevřeme soubor php.ini a v bloce [mail function] ověřte, zda máte tyto řádky:

SMTP = localhost
smtp_port = 25
Když nejsou nebo jsou zakomentováný, tak je doplňte nebo aktivujte. Teď už by Vám všechno mělo fungovat.

Druhý příklad - s ověřením vstupních dat.

<?php
function show_form()
{
?>
<form action="" method=post>
<
div align="center">
              <
br />Jméno:*<br />
              <
input type="text" name="name" size="40">
              <
br />Telefonní číslo:<br />
              <
input type="text" name="tel" size="40">
              <
br />E-mail:*<br />
              <
input type="text" name="email" size="40">
              <
br />Téma:<br />
              <
input type="text" name="title" size="40">
              <
br />Text zprávy:*<br />
              <
textarea rows="10" name="mess" cols="30"></textarea>
              <
br /><input type="submit" value="Odeslat" name="submit">
</
div>
</
form>
Musíte vyplňit.
<?php
}

function 
complete_mail() {
        
// $_POST['title'] data z inputu Předmět, trim() - odstraňuje zbytečné 
        //mezery a řádky, htmlspecialchars() - převádí specifické symboly 
        //do HTML entit, proto, aby jsme zabránili nejjednoduššímu pokusu o 
        //hacknutí stránky a substr($_POST['title'], 0, 1000) - 
        //omezujeme text do 1000 znaků. Pro proměnné 
        //$_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] 
        //uděláme to samé.

        
$title =  substr(htmlspecialchars(trim($_POST['title'])), 01000);
        
$message =  substr(htmlspecialchars(trim($_POST['mess'])), 01000000);
        
$name =  substr(htmlspecialchars(trim($_POST['name'])), 030);
        
$tel =  substr(htmlspecialchars(trim($_POST['tel'])), 030);
        
$email =  substr(htmlspecialchars(trim($_POST['email'])), 050);
        
// Jestli není vyplněno pole "Jméno" - chyba 0
        
if (empty($name))
             
output_err(0);
        
// Jestli pole email vyplněno špatně - chyba 1
        
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"$email))
             
output_err(1);
        
// Jestli není vyplněno pole "Text zprávy" - chyba 2
        
if(empty($message))
             
output_err(2);
        
// vytvoříme náš e-mail
        
$mess '
Jméno odesílatele: '
.$name.' <br>
Telefonní číslo: '
.$tel.' <br>
Email: '
.$email.' <br>
'
.$message;
        
// $to - příjemce emailu
        
$to $email;
        
// $from - odesílatel
        
$headers  'MIME-Version: 1.0' "\r\n";
        
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n";
        
$headers .= 'From: Koding.cz<info@koding.cz>'"\r\n";
        
        if(
mail($to$title$mess$headers)){
        echo 
'Děkujeme! Váš dopis byl odeslán.';
    }else{
        echo 
'Dopis nebyl odeslán';
    }
}

function 
output_err($num)
{
    
$err[0] = 'Chyba! Zadejte jméno.';
    
$err[1] = 'Chyba! Špatný e-mail.';
    
$err[2] = 'Chyba! Zadejte zprávu.';
    echo 
'<p>'.$err[$num].'</p>';
    
show_form();
    exit();
}

if (!empty(
$_POST['submit'])) complete_mail();
else 
show_form();
?>

Ukázka

Děkuji za pozornost, v dalším článku Vám ještě ukážu, jak se da poslat nejenom textovou zprávu, ale obrázek či soubor.

Systém Orphus
Napište komentář.
Celkem komenrářů(1627)
VdjSIPSY - 2018-11-20  14:11:41
 womens viagra buy viagra online buy viagra professional [url=http://genericonlineviaqra.com/]viagra online[/url]
Bsgskync - 2018-11-19  16:11:28
 viagra sale viagra online purchase viagra [url=http://dejviagram.com/]online viagra[/url]
NsgWrict - 2018-11-19  05:23:00
 viagra without prescription generic viagra viagra wholesale [url=http://setviagraeja.com/]viagra buy[/url]
BdgPsype - 2018-11-19  01:26:09
 cialis soft tabs cialis generic online tadalafil reviews [url=http://hopcialisraj.com/]п»їcialis online[/url]
NsgUrgem - 2018-11-18  22:15:11
 buy viagra on line buy generic viagra online generic viagra online [url=http://viagraveikd.com/]generic viagra[/url]
NdhPaure - 2018-11-18  19:35:49
 cialis online pharmacy buy cialis cialis reviews [url=http://hitcialisosn.com/]buy cialis online[/url]
Nfhskync - 2018-11-18  13:09:14
 cialis brand cialis cheap cialis soft [url=http://gocialisgjb.com/]cialis online[/url]
DgjPsype - 2018-11-18  12:18:01
 purchase viagra online online viagra discount generic viagra [url=http://loviagraosn.com/]online viagra[/url]
BbhPlaus - 2018-11-18  08:41:54
 viagra price online viagra generic viagra [url=http://newviagrakfv.com/]generic viagra online[/url]
NehPaure - 2018-11-17  12:54:03
 tadalafil dosage п»їcialis online cialis canada [url=http://valcialisns.com/]online cialis[/url]
IkjSIPSY - 2018-11-17  01:39:46
 viagra 50mg viagra online buying viagra online [url=http://saresltd.com/]generic viagra online[/url]
Bafskync - 2018-11-15  23:30:49
 cialis for sale п»їcialis buy cialis without prescription [url=http://cialisheobg.com/]online cialis[/url]
BshPaure - 2018-11-15  10:06:53
 non prescription cialis buy cialis cialis soft [url=http://cialisgeans.com/]online cialis[/url]
NfhPsype - 2018-11-15  07:34:50
 buy tadalafil 20mg price cialis generic online cialis 10mg [url=http://cialisjesh.com/]cialis[/url]
SbhPlaus - 2018-11-15  03:43:56
 generic viagra soft tabs buy viagra online viagra purchase [url=http://www.viagenericahecv.com/]generic viagra[/url]
VsfWrict - 2018-11-14  23:34:44
 viagra brands Viagra without a doctor prescription viagra prescription online [url=http://hpviagrajoagin.com/]buy viagra[/url]
AfbUrgem - 2018-11-14  17:46:23
 generic viagra online buy viagra viagra samples [url=http://generichviagraa
c.com/]generic viagra[/url]
Nwtskync - 2018-11-14  16:09:19
 cialis price cialis online purchase cialis [url=http://cialisgessa.com/]п»їcialis[/url]
FujPsype - 2018-11-14  10:01:32
 discount cialis cialis generic online do you need a prescription for cialis [url=http://joicialisosn.com/]tadalafil[/url]
XhjPaure - 2018-11-13  16:19:14
 order cialis online buy cialis online what is tadalafil [url=http://cialishwzbm.com/]п»їcialis online[/url]
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.