Hromadné zasílání novinek e-mailem
Následující aplikace řeší zasílání novinek registrovaným uživatelům serveru. Volně navazuje na článek „Mailing-list konzola v PHP“, kde bylo řešeno jen rozesílání emailů, ale už ne přihlašování se k odběru. Aplikace využívá databázi MySQL a PHP.
Naše aplikace se skládá ze tří částí, respektive řeší následující tři body:
- přihlášení k odběru
- kontrola vloženého emailu
- rozeslání novinek emailem
Struktura databáze
Nejprve si vytvoříme databázi, například novinky, a v ní tabulku seznam. Tabulka seznam bude mít 5 sloupců (id záznamu, datum registrace emailu, registrovaný email, kód generovaným systémem pro ověření a kolonku, zda ověření emailu proběhlo v pořádku):
CREATE TABLE seznam (
id int(4) NOT NULL auto_increment,
datum datetime NOT NULL default ‚0000-00-00 00:00:00‘,
email varchar(50) NOT NULL default “,
kod varchar(100) NOT NULL default “,
overeno char(2) NOT NULL default “,
UNIQUE KEY email (email),
UNIQUE KEY id (id)
) TYPE=MyISAM;
Skript pro připojení k MySQL
Skript si pojmenujeme config.php. Je také třeba upravit nastavení serveru MySQL, tzn. server, přihlašovací jméno a heslo:
<?php
@$spojeni = MySQL_Connect(„localhost“,““,““);
// spojení s db serverem – doplňte název serveru, uživatele a heslo
if(!$spojeni):
// pokud se spojení s db serverem neuskuteční, vypíše chybové hlášení
echo „Nelze se připojit k databázi!“;
exit;
else:
MySQL_Select_DB(„novinky“);
// výběr databáze novinky
endif;
?>
Formulář pro registraci emailu
Formulář pro registraci emailu je spojovací prvek mezi uživatelem a naším serverem. Ve formuláři zadáte svou emailovou adresu a odešlete na server. Následující soubor si pojmenujeme insert.php:
<?php
if((empty($_GET[‚akce‘]))AND(empty($kod))):?>
<form action=“insert.php“ method=“get“>
<table width=“500″ border=“0″ cellpadding=“10″ cellspacing=“0″ bgcolor=“#8080ff“>
<tr>
<td align=“right“><strong>Zadejte zde prosím Vaši platnou e-mail adresu:</strong></td>
<td><input type=“text“ name=“email“ value=“váš@email.cz“ /></td>
</tr>
<tr>
<td></td>
<td><input type=“submit“ name=“akce“ value=“Ano, chci novinky e-mailem“ /></td>
</tr>
</table>
</form>
Skript pro zpracování vložených dat
Pokračujeme v zápisu v souboru insert.php. Tento skript nám provede zápis do databáze a zašle nám potvrzovací email na registrovanou adresu:
<?php
elseif(!empty($_GET[‚akce‘])):
require(„config.php“);
// načtení nastavení databáze
$DnesniDatum=date(„Y-m-d H:i:s“);
// dnešní datum a čas
$Kod=MD5($_GET[‚email‘]);
// generování unikátního kódu
$Email=$_GET[‚email‘];
if(empty($Email)):
// kontrola zadání emailu
echo „Nebyl zadán e-mail!“;
exit;
else:
@$vysledek=MySQL_Query(„INSERT INTO seznam VALUES (“, ‚$DnesniDatum‘, ‚$Email‘, ‚$Kod‘, ‚NO‘)“);
// vložení dat do databáze
if($vysledek):
$predmet=“Potvrzení e-mailu“;
$hlavicka=“From: test@test.cz\nX-Mailer: TEST\nContent-Type: text/html“;
$zprava=“Dne: „.$DnesniDatum.“ byl přidán Váš e-mail: „.$Email.“ do naší databáze pro zasílání novinek našeho serveru. Klikněte na následující odkaz pro potvrzení správnosti e-mailu: <a href=’http://localhost/interval/insert.php?email=“.$email.“&kod=“.$Kod.“‚>
http://localhost/interval/insert.php?email=“.$email.“&kod=“.$Kod.“</a><br><br>S pozdravem Admin“;
// nutno upravit cestu dle vašeho serveru
mail(„$Email“,“$predmet“,“$zprava“,“$hlavicka“);
// zaslání emailu uživateli pro ověření
echo „Váš e-mail byl přidán do naší databáze. Byl Vám odeslán e-mail pro potvrzení.“;
else:
if(mysql_errno()==1062):
// kontrola duplicity vkládaných údajů
echo „Email je již v databázi!“;
exit;
else:
// došlo k jiné chybě
echo „Došlo k chybě, kontaktujte administrátora“;
exit;
endif;
endif;
endif;
endif;
Skript pro ověření emailové adresy
Po vložení emailové adresy ve formuláři bude zaslán email. V emailu je uvedena adresa, kde se provádí ověření. Následující skript nám to zabezpečí. Pokračujeme v zápisu v souboru insert.php:
if((!empty($_GET[‚kod‘]))AND(!empty($_GET[‚email‘]))):
require(„config.php“);
// načtení nastavení databáze
@$kontrola=MySQL_Result(MySQL_Query(„SELECT email FROM seznam WHERE (email=’$email‘ AND kod=’$kod‘)“), „email“);
if($kontrola==$_GET[‚email‘]):
// ověření emailu
@$vysledek=MySQL_Query(„UPDATE seznam SET overeno=’OK‘ WHERE (email=’$email‘ AND kod=’$kod‘)“);
if(!$vysledek):
echo „Chyba databáze“;
exit;
else:
echo „Údaje byly ověřeny, děkujeme.“;
exit;
endif;
elseif($kontrola!=$_GET[‚email‘]):
echo „Údaje nebyly ověřeny.“;
exit;
endif;
endif;
?>
Rozeslání novinek
Zde je uvedeno jednoduché administrační centrum pro zasílání novinek. Soubor pojmenujeme admin.php. Zasílá email všem registrovaným a ověřeným emailovým adresám:
<?php
if(empty($_GET[‚id‘])):
echo „<li><a href=’admin.php?id=new’>Zaslání novinek registrovaným uživatelům</a></li>“;
elseif($_GET[‚id‘]==’new‘):
?>
<form action=“admin.php“ method=“get“>
<table width=“500″ border=“0″ cellpadding=“10″ cellspacing=“0″ bgcolor=“#8080ff“>
<tr>
<td><textarea cols=“25″ rows=“10″ name=“zprava“></textarea>
<input type=“hidden“ name=“id“ value=“ok“ /></td>
<td><input type=“submit“ name=“akce“ value=“Odeslat reg. uživatelům“ /></td>
</tr>
</table>
</form>
<?php
endif;
if($_GET[‚id‘]==’ok‘ AND (!empty($_GET[‚zprava‘]))):
// posíláme zprávu?
require(„config.php“);
// načtení konfigurace databáze
$zprava=$_GET[‚zprava‘];
@$vysledek=MySQL_Query(„SELECT email FROM seznam WHERE overeno=’OK'“);
// výběr emailů z databáze
if(!$vysledek):
// ošetření chyby
echo „V databázi není žádný reg. uživatel“;
exit;
endif;
$predmet=“Novinky!“;
$hlavicka=“From: MailRobot@domena.cz\r\n“;
while($zaznam=MySQL_Fetch_Array($vysledek)):
$bccx[]=$zaznam[‚email‘];
// načtení emailů do pole
endwhile;
$bcc.=“Bcc: „.Implode($bccx, „,“).“\r\n“;
// oddělení emailů čárkou
$hlavicka.=$bcc.“Mime-Version: 1.0\r\nX-Mailer: TEST\r\nContent-Type: text/plain; charset=windows-1250\r\n“;
mail(„“, „$predmet“, „$zprava“, „$hlavicka“);
// poslání emailu
$users = mysql_fetch_row(mysql_query(„SELECT COUNT(id) FROM seznam WHERE overeno=’OK'“));
// kolika lidem se email odeslal
echo „Posláno: „.$users[0].“ uživatelům“;
endif;
?>
Aplikace neobsahuje kontrolní mechanismy vkládaných dat, ty si už musí každý programátor udělat sám. Jednotlivé skripy si můžete stáhnout.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Regulace digitálních služeb: Co přináší nové nařízení DSA?
20. února 2024 -
Souboj na trhu s CPU pro servery: AMD vs. Intel
8. prosince 2023 -
Lék na phishing a apatii ve světě e-mailového marketingu
18. března 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
sikulovaHana@seznam.cz
Led 3, 2010 v 2:00sikulovaHana@seznam.cz
MUDr.Minařík Antonín
Led 10, 2011 v 10:02absolutní spokojenost
lubos.kosinka@centrumholdings.com
Bře 7, 2011 v 11:59lubos.kosinka@centrumholdings.com
Anonym
Dub 25, 2011 v 17:33hodně v pohodě
Michal
Úno 19, 2012 v 10:39Nefunguje to, píše to Došlo k chybě, kontaktujte administrátora
Standa
Srp 15, 2014 v 10:43Odesílání běhá v pohodě.
Děkuji autorovi