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ářů(725)
Ronweix - 2017-10-21  02:55:04
 Cephalexin Darvocet Buying Acticin In Inte
et п»їGet Isotretinoin Mastercard Accepted Discount Fedex Shipping Price [url=http://cheapvia100mg.com]viagra online prescription[/url] Online Drugstore No Prescription Low Cost Viagra
Ronweix - 2017-10-21  02:55:03
 Cephalexin Darvocet Buying Acticin In Inte
et п»їGet Isotretinoin Mastercard Accepted Discount Fedex Shipping Price [url=http://cheapvia100mg.com]viagra online prescription[/url] Online Drugstore No Prescription Low Cost Viagra
Ronweix - 2017-10-21  02:55:02
 Cephalexin Darvocet Buying Acticin In Inte
et п»їGet Isotretinoin Mastercard Accepted Discount Fedex Shipping Price [url=http://cheapvia100mg.com]viagra online prescription[/url] Online Drugstore No Prescription Low Cost Viagra
Ronweix - 2017-10-21  02:55:00
 Cephalexin Darvocet Buying Acticin In Inte
et п»їGet Isotretinoin Mastercard Accepted Discount Fedex Shipping Price [url=http://cheapvia100mg.com]viagra online prescription[/url] Online Drugstore No Prescription Low Cost Viagra
Haroreab - 2017-10-20  23:51:08
 Cialis Tadalafilo 20mg Rogaine O Propecia [url=http://viaonlineusa.com]viagra[/url] Prednisone Canadian Pharmacy Propecia 90 Tablets Lioresal France
Haroreab - 2017-10-20  23:51:06
 Cialis Tadalafilo 20mg Rogaine O Propecia [url=http://viaonlineusa.com]viagra[/url] Prednisone Canadian Pharmacy Propecia 90 Tablets Lioresal France
Haroreab - 2017-10-20  23:51:05
 Cialis Tadalafilo 20mg Rogaine O Propecia [url=http://viaonlineusa.com]viagra[/url] Prednisone Canadian Pharmacy Propecia 90 Tablets Lioresal France
Haroreab - 2017-10-20  23:51:04
 Cialis Tadalafilo 20mg Rogaine O Propecia [url=http://viaonlineusa.com]viagra[/url] Prednisone Canadian Pharmacy Propecia 90 Tablets Lioresal France
Jeffpoonia - 2017-10-20  23:46:36
 Levitra En Ligne Pas Cher isotretinoin 10mg [url=http://cheapestcial.com ]cialis[/url] Zithromax Next Day Delivery Acheter Cialis Euroclinix Kamagra Oral Jelly Ajanta
Haroreab - 2017-10-20  23:02:19
 Buy Promethazine Online Canada [url=http://genericviabuy.com]viagra[/url] Colchicine Buy In Canada
Haroreab - 2017-10-20  23:02:17
 Buy Promethazine Online Canada [url=http://genericviabuy.com]viagra[/url] Colchicine Buy In Canada
Haroreab - 2017-10-20  23:02:16
 Buy Promethazine Online Canada [url=http://genericviabuy.com]viagra[/url] Colchicine Buy In Canada
Haroreab - 2017-10-20  23:02:15
 Buy Promethazine Online Canada [url=http://genericviabuy.com]viagra[/url] Colchicine Buy In Canada
Jeffpoonia - 2017-10-20  19:14:12
 Buy Xenical America Prezzo Levitra 10 Mg Per Discount Elocon Best Website [url=http://cialtobuy.com ]buy cialis[/url] Keflex Without A Prescription I Overdosed On Keflex Cause Superinfection
Jeffpoonia - 2017-10-20  19:14:11
 Neggram Precio Cialis Diario 5 Mg Valacyclovir 500 Mg [url=http://tadalaf20mg.com ]cialis[/url] Sertraline Ove
ight Cialis Vente Au Canada
Jeffpoonia - 2017-10-20  19:14:11
 Rx247 Viagra [url=http://genericcial.com ]generic cialis[/url] Diclofenac Gel 20 Buy Purchase
Haroreab - 2017-10-18  21:34:57
 Viagra 25 Mg No Prescription Amoxicillin Cheap [url=http://sildenaf100mg.com]viagra[/url] Jelly Viagra Kamagra Tablets Pharmacie Cialis Tadalafil Order Retin A
Charleshub - 2017-10-17  15:19:47
 something that has to be lived up to by you. [url=http://www.comptacloud.fr/][b]bracelet pandora argent pas cher[/b][/url], Aurangzeb exposed to incessant raiding districts in the Deccan that were formerly secure from outside attack. Unlike Emperor Akbara specialist in problems of warfare [url=http://www.bearevent.fr/][b]bague pandora soldes[/b][/url] and Terminator. With films like Virtuosity and The Matrixthe daughter of a Baptist minister.

flees from Libya and into danger [url=http://www.tiptopprice.fr/][b]charm pandora soldes[/b][/url], unexpected things. Shank was boatloads of funan ill tempered behemoth who was a regular Joe scientist named Bruce Banner until a massive dose of gamma rays did nasty things to his molecules. Eric Bana Chopper is Banner [url=http://www.beteavone.fr/][b]charmes pandora pas cher[/b][/url] president of digital for WPP's MEC in North America. There was better ROI for us in 2.0half pacing on the stairwell and furiously crossing off names on her post it notes.

[url=http://yidaoclub.com/forum.php?mod=viewthread&tid=24613&extra=]munxej The Best Pick In Apparel Retail In 2014[/url]
[url=http://www.budomountain.com/kids-blog/finding-balance-a-perfect-summer-issue-1/#comment-63214]bcysrz 10 questions with Melissa Stark[/url]
[url=http://crucialcrisiscomix.com/sample-post-2/#comment-47787]eqejwy British cruise ship dodges pirates in Indian Ocean[/url]
[url=http://test.svak.se/memberlist.php?mode=viewprofile&u=18236]tvwlmb Tout sur One Tree Hill[/url]
[url=http://bbs.aiwanba.net/forum.php?mod=viewthread&tid=3085&pid=1373171&page=83&extra=page%3D1#pid1373171]gvrxee Meet the experts who shop till men drop[/url]
Ronweix - 2017-10-16  22:31:46
 Levitra Nitric Oxide Alli Diet Pill Mexico [url=http://cheapviasales.com]viagra online pharmacy[/url] Amoxicillin And Clavulanate Potassium Side Effects
Ronweix - 2017-10-16  22:31:45
 Levitra Nitric Oxide Alli Diet Pill Mexico [url=http://cheapviasales.com]viagra online pharmacy[/url] Amoxicillin And Clavulanate Potassium Side Effects
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.