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ářů(1518)
MarinkHen - 2018-08-10  23:59:46
 Народ кому интересно нашла отличный торрент плеер Kino-Torrent версия PRO
Все фильмы, сериалы и мультики в одной программе - просмотр и скачивание. Бесплатно и без рекламы.
Быстрый поиск по всему рунету. Обновления фильмов точно в день выхода в кинотеатрах.
Сегодня добавленно: [b]"Мег: Монстр глубины" "Кристофер Робин" "Судная ночь. Начало"[/b]
Скачать Kino-Torrent версии PRO можно здесь: [url=http://kino-top.tk][b]KinoTorrentSetup[/b][/url]
JamesNox - 2018-08-05  12:49:11
 Help Jack please: http://asn-trk.advolution.de/0000025f72/?url=https://vk.cc/8l7kvh
JamesNox - 2018-08-05  12:49:06
 Help Jack please: http://asn-trk.advolution.de/0000025f72/?url=https://vk.cc/8l7kvh
JamesNox - 2018-08-05  12:49:03
 Help Jack please: http://asn-trk.advolution.de/0000025f72/?url=https://vk.cc/8l7kvh
JamesNox - 2018-08-05  12:48:57
 Help Jack please: http://asn-trk.advolution.de/0000025f72/?url=https://vk.cc/8l7kvh
Kissingmyass2 - 2018-08-03  17:02:21
 https://como79.com/super/ - 슈퍼카지노
https://como79.com/ - 우리카지노
https://como79.com/theking/ - 더킹카지노
https://como79.com/yescasino/ - 예스카지노
https://como79.com/yes/ - YES카지노
https://como79.com/obama/ - 오바마카지노
https://como79.com/mcasino/ - M카지노
https://como79.com/first/ - 퍼스트카지노
https://como79.com/trump/ - 트럼프카지노
https://como79.com/gatsby/ - 개츠비카지노
Jgh72922r - 2018-08-03  17:02:04
 https://stylebet77.com/ - 우리카지노
https://stylebet77.com/yes/ - 예스카지노
https://stylebet77.com/first/ - 퍼스트카지노
https://stylebet77.com/obama/ - 오바마카지노
https://stylebet77.com/yescasino/ - YES카지노
https://stylebet77.com/theking/ - 더킹카지노
https://stylebet77.com/canibal/ - 카니발카지노
Midasjern2 - 2018-08-03  17:01:41
 https://custory.com/super/ - 슈퍼카지노
https://custory.com/woori/ - 우리카지노
https://custory.com/first/ - 퍼스트카지노
https://custory.com/yes/ - 예스카지노
https://custory.com/yescasino/ - YES카지노
https://custory.com/obama/ - 오바마카지노
Daesungjeon5 - 2018-08-03  17:01:17
 https://dancesweb.com/ - 슈퍼카지노
https://dancesweb.com/woori/ - 우리카지노
https://dancesweb.com/first/ - 퍼스트카지노
https://dancesweb.com/yesca/ - 예스카지노
https://dancesweb.com/yesno/ - YES카지노
https://dancesweb.com/obama/ - 오바마카지노
Ddolboy5 - 2018-08-03  17:00:48
 https://pauio.com/super/ - 슈퍼카지노
https://pauio.com/woori/ - 우리카지노
https://pauio.com/first/ - 퍼스트카지노
https://pauio.com/yesci/ - 예스카지노
https://pauio.com/yeska/ - YES카지노
https://pauio.com/obamas/ - 오바마카지노
Jackiebains - 2018-07-30  02:43:22
 kamagra 100mg chewable lifesavers
kamagra
kamagra 100mg oral jelly side effects
[url=https://www.kamagrapos.com/]kamagra oral jelly[/url]
kamagra oral jelly amazon
Ihuujiqinoub - 2018-07-26  15:06:57
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Kurapayo - 2018-07-26  14:44:47
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ibageteumorev - 2018-07-26  14:28:50
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ofupivzarel - 2018-07-26  14:21:40
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Egehihesewap - 2018-07-26  14:09:09
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Equgowexele - 2018-07-26  14:00:18
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Aijocciabeji - 2018-07-26  13:54:19
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ewuguzewumoy - 2018-07-26  13:52:48
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
Ewowadpawiv - 2018-07-26  13:36:41
 [url=http://doxycycline-cheapbuy.site/]doxycycline-cheapbuy.site.ankor[/url] onlinebuycytotec.site.ankor
*v komentářich nesmíte používat sprostá slova a odkazy!!!Děkuji za pochopeni.