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ářů(898)
Crystal Oliver - 2017-12-07  19:44:53
 iUjXk60H Laboriosam eaque ducimus fugit laboriosam corrupt
Crystal Oliver - 2017-12-07  19:44:35
 iUjXk60H Laboriosam eaque ducimus fugit laboriosam corrupt
Crystal Oliver - 2017-12-07  19:44:21
 iUjXk60H Laboriosam eaque ducimus fugit laboriosam corrupt
Crystal Oliver - 2017-12-07  19:44:08
 iUjXk60H Laboriosam eaque ducimus fugit laboriosam corrupt
Crystal Oliver - 2017-12-07  19:43:58
 iUjXk60H Laboriosam eaque ducimus fugit laboriosam corrupt
Nicholas Townsend - 2017-12-07  08:46:41
 QvCjHOoC Quam nostrum velit. Fuga odio doloribus dignissim
Haroreab - 2017-12-05  01:24:16
 Propecia With Birth Control Pills Acquisto Viagra Per Donne [url=http://mailordervia.com]viagra online[/url] Where I Can Buy Fast Flagyl No Rx Drug Interaction Coumadin Amoxicillin Keflex Drug Interactions
Haroreab - 2017-12-05  00:54:17
 Canadian Discount Drugs Amoxicillin Dry Throat [url=http://cheapvia25mg.com]viagra online prescription[/url] Generic Next Day Ziagra
Haroreab - 2017-12-05  00:54:16
 Canadian Discount Drugs Amoxicillin Dry Throat [url=http://cheapvia25mg.com]viagra online prescription[/url] Generic Next Day Ziagra
Haroreab - 2017-12-05  00:54:15
 Canadian Discount Drugs Amoxicillin Dry Throat [url=http://cheapvia25mg.com]viagra online prescription[/url] Generic Next Day Ziagra
Haroreab - 2017-12-05  00:54:13
 Canadian Discount Drugs Amoxicillin Dry Throat [url=http://cheapvia25mg.com]viagra online prescription[/url] Generic Next Day Ziagra
Haroreab - 2017-12-04  16:47:17
 El Cialis Generico [url=http://cialtobuy.com]online pharmacy[/url] Priligy Precio En Venezuela For Sale Legally Progesterone Visa Best Website. Buy Progesterone Discount Low Price
Haroreab - 2017-12-04  13:21:13
 Viagra Online 25 Mg Cheap Alte
ative To Effexor [url=http://cheapvia100mg.com]viagra online prescription[/url] Canadian 24 Hr Pharmacy Acquistare Viagra In Europa
Haroreab - 2017-12-04  13:21:12
 Viagra Online 25 Mg Cheap Alte
ative To Effexor [url=http://cheapvia100mg.com]viagra online prescription[/url] Canadian 24 Hr Pharmacy Acquistare Viagra In Europa
Haroreab - 2017-12-04  13:21:11
 Viagra Online 25 Mg Cheap Alte
ative To Effexor [url=http://cheapvia100mg.com]viagra online prescription[/url] Canadian 24 Hr Pharmacy Acquistare Viagra In Europa
Haroreab - 2017-12-04  13:21:09
 Viagra Online 25 Mg Cheap Alte
ative To Effexor [url=http://cheapvia100mg.com]viagra online prescription[/url] Canadian 24 Hr Pharmacy Acquistare Viagra In Europa
Haroreab - 2017-12-04  12:04:39
 Find Isotretinoin Online Discount With Ove
ight Delivery Cheap [url=http://buyonlinecial.com]cialis[/url] Viagra Farmacia Italiana
Jeffpoonia - 2017-12-04  10:30:05
 Viagra Online Comprar [url=http://cheapestcial.com ]cialis[/url] No Prescription Needed Inte
ational Viagra Inte
et Forum Does Amoxil Treat Upper Respirator Infection
Jeffpoonia - 2017-12-04  10:30:05
 Cialis Generit Priligy Alkohol [url=http://genericcial.com ]cialis[/url] Viagra Rezeptfrei Kaufen Hannover
Jeffpoonia - 2017-12-04  10:30:04
 Viagra Online Comprar [url=http://cheapestcial.com ]cialis[/url] No Prescription Needed Inte
ational Viagra Inte
et Forum Does Amoxil Treat Upper Respirator Infection
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.