PHP aneb Jak odeslat e-mail (3)

Autor: Ji?í Luká? <jirilukas(at)supersvet.cz>, Téma: PHP, Vydáno dne: 26. 02. 2001

Jak jsem vám v minulém dílu slíbil, tak dnes ?iním a v?nuji tento dne?ní záv?re?ný díl mého malého "mailového PHP kurzu" problematice hromadného rozesílání jednoho elektronického dopisu na více adres.

Hromadné rozesílání jednoho e-mailu na více adres

Pokud se nad vý?e vypsaným úkolem alespo? trochu zamyslíte a vezmete v potaz b??n? dostupné mo?nosti elektronické po?ty, musí vám být ihned jasné, ?e tuto akci lze provést t?emi zp?soby, respektive za pomoci t?ech r?zných parametr? elektronického dopisu, které jsem mimochodem v?echny ulo?eny v hlavi?ce e-mailu.

Konkrétn? se jedná o následující parametry/vlastnosti dopisu:

  1. P?íjemce dopisu - parametr: To
  2. Kopie dopisu - parametr: Cc
  3. Skrytá kopie dopisu - parametr: Bcc

Prost?ednictvím v?ech t?í vý?e vypsaných vlastností elektronického dopisu (a samoz?ejm? i jejich r?zných kombinací) lze doru?it kopie jednoho dopisu na více elektronických adres.

Proto?e struktura PHP scriptu, který by dokázal "umístit" více adres do alespo? jednoho z vý?e vyjmenovaných parametr? elektronického dopisu je opravdu jednoduchá a nikterak v?domostn? náro?ná, nebudu se nadále zdr?ovat popisem teorie a rad?ji vám ihned uká?i ukázkový kód, který celou v?c ?e?ení prost?ednictvím vlastnosti: P?íjemce dopisu (anglická zkratka p?íslu?ného parametru: To) a e-maily jednotlivých p?íjemc? získává z výpisu MySQL databáze (- bli??í informace týkající se rela?ního databázového serveru MySQL m??ete nalézt v rubrice Programátorova kuchy?).

Poznámka: ?ervená barva ozna?uje ve zdrojovém kódu taková místa, která jsou pro celý script ?e?ící na?e vý?e polo?ené zadání klí?ová!

<? ... dal?í kód ...
$zprava="Zde se nalézá text s ?eskou diakritikou!";
$zprava=Base64_Encode($zprava);
$hlavicka .= "From: admin@jmeno_serveru\n".
    "MIME-Version: 1.0\n".
    "Content-Type: text/plain; charset=\"windows-1250\"\n".
    "Content-Transfer-Encoding: base64";
for ($op=0;$op<$rotace;$op++):
   if ($op!=0):
     $emails .=",";
   endif;
   $emails .=mysql_Result($vysledekdotazu,$op,"email");
endfor;
mail($emails,$predmet,$zprava,$hlavicka);
... dal?í kód ...?>

Nosným základem celého scriptu z hlediska pln?ní námi ?ádané funkce je opakovací cyklus FOR, který do prom?nné $emails (- typu string) vlo?í takový po?et adres, který je v tomto p?ípad? p?ímo roven hodnot? prom?nné $rotace. Podmínka typu IF umíst?ná p?ímo v t?le tohoto opakovacího cyklu zaru?uje, ?e v?echny jednotlivé e-mailový adresy budou od sebe odd?leny ?árkou, p?i?em? se toto odd?lení nebude vyskytovat p?ed první ani za poslední adresou.

Proto?e vkládané hodnoty, tedy e-mailové adresy lze také získat nap?. z pole ?et?zc?, uvádím ní?e jako ukázkový p?íklad PHP script, ve kterém nejprve do pole zapí?i t?i adresy a pak je v druhé polovin? scriptu vlo?ím pomocí vý?e popsané rutiny do prom?nné $emails.

<? $eladresa[0]="petr@seznam.cz";
$eladresa[1]="tomas@seznam.cz";
$eladresa[2]="jirka@seznam.cz";
$rotace=3;

for ($op=0;$op<$rotace;$op++):
   if ($op!=0):
     $emails .=",";
   endif;
   $emails .=$eladresa[$op];
endfor;

echo $emails;
?>

Výstupem tohoto scriptu je následující ?et?zec petr@seznam.cz,tomas@seznam.cz,jirka@seznam.cz, který by po svém vhodném umíst?ní do PHP funkce Mail(); (viz. minulý p?íklad) zp?sobil, ?e takto odeslaný dopis by do?el na více e-mailových adres.

Co se tý?e vyu?ití ostatních parametr? elektronického dopisu pro rozeslání jednoho e-mailu na více adres, tak je postup prakticky stejný s tím, ?e se jednotlivé e-mailové adresy zapisují do jiné prom?nné.

Nu a touto poslední informací bych rád tento sv?j malý mailový PHP kurz ukon?il a zárove? vám pop?ál hezké a bezstarostné odesílání elektronické po?ty.

PS: Pokud vás toto téma zaujalo, tak vám doporu?uji p?e?íst si tento m?j star?í ?lánek, ve kterém vysv?tluji, co v?e lze s takovým e-mailem provést prost?ednictvím hypertextového odkazu.




Copyright supersvet.cz, 1998-2005