PHP aneb Jak odeslat e-mail (1)

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

I kdy? se v podstat? z pohledu PHP jedná o velmi jednoduchou zále?itost (- tak trochu to sice komplikuje ?e?tina, ale na to jsme ji? ur?it? v?ichni zvykli ":-)"), kterou lze jednodu?e vy?e?it pou?itím jedné funkce s n?kolika málo parametry, existuje je?t? po?ád stále mnoho lidí, kte?í tuto PHP "funkci" neovládají a práv? t?m je tento ?lánek ur?en.

Av?ak i o n?co více zku?en?j?í u?ivatelé PHP zde dozajista najdou mnohé u?ite?né rady v?etn? p?íkladu, jak se vypo?ádat s ?e?tinou!

Vstupní formulá?

Jeliko? asi nej?ast?ji vyu?ívaným zp?sobem p?edávání vstupních dat do PHP scriptu je WWW stránka s integrovaným formulá?, rozhodl jsem pro úplné za?áte?níky jeden takový malý formulá? vypracovat, abych jim jejich první programátorské kr??ky co mo?ná nejvíce uleh?il!

Zdrojový kód:

Odesílatel:  
P?íjemce:  
P?edm?t:  

    

Seznam jmen výstupních parametr? formulá?e: odesilatel, prijemce, predmet, dopis

Struktura e-mailu

Je?t? ne?-li se pustím do popisu PHP scriptu, který bude zpracovávat vstupní data a jeho výsledkem bude jeden odeslaný e-mail, tak bych vám rád p?ipomn?l z jakých ?ástí se v?bec takový "oby?ejný" e-mail skládá a na co bychom si m?li p?i jeho tvorb? dát pozor!

Ka?dý e-mail se v?dy skládá z hlavi?ky a samotné zprávy (dat), p?i?em? zp?sob kódování zprávy (dat) je specifikován v hlavi?ce dopisu. Hlavi?ka dopisu je od samotné zprávy (dat) odd?lena jedním prázdným ?ádkem a jednotlivé polo?ky v hlavi?ce se nalézají ka?dá na svém ?ádku.

Upozorn?ní! P?i tvorb? nebo úprav? dopisové hlavi?ky si dejte pozor na ne?ádoucí vícenásobné "za ?ádkování", které zp?sobí, ?e zbytek hlavi?ky následující po takovéto chyb? bude najednou interpretován jako sou?ást zprávy (dat) dopisu a ztratí tím tedy mo?nost ovlivnit vlastnosti dopisu. Je-li tedy sou?ástí takto ztracené ?ásti hlavi?ky nap?. polo?ka "Subject" (P?edm?t dopisu) a "From" (specifikace odesílatele), tak nebude vá?, ale i jakýkoliv jiný, po?tovní klient, schopen zobrazit informace o odesílateli po?ty a polo?ku p?edm?t dopisu.

Co v?e lze nalézt v hlavi?ce e-mailu? Jak jsem ji? vý?e ?ekl, zp?sob kódování zprávy (dat), kterou dopis obsahuje, dále specifikaci odesílatele, p?íjemce, p?íjemce kopií, data odeslání, p?edm?tu dopisu, identifikaci po?tovního serveru odesílatele a historii "cesty" tohoto e-mailu (IP adresy v?ech po?tovních server?, kterými tento e-mail pro?el), ur?ení priority dopisu (v Outlooku je nap?. dopis s vysokou prioritou ozna?en ?erveným vyk?i?níkem), atd.

PHP script

Pro odeslání dopisu pou?ijeme PHP funkci Mail();, její? návratová hodnota je typu integer a nabývá hodnot 1/0 (?i-li true/false) podle tohoto, zda-li do?lo k úsp??nému odeslání dopisu nebo ne.

Syntaxe funkce Mail();

integer Mail(string «komu», string «p?edm?t», string «zpráva», string «hlavi?ka»);

Ukázkový kód:

<? ... dal?í kód ...
if (Mail($prijemce,$predmet,$dopis,"From: ".$odesilatel."\nX-Mailer: PHP3")):
  echo "Dopis byl úsp??n? odeslán!";
else:
  echo "Chyba! Dopis nebyl odeslán.";
endif;
... dal?í kód ... ?>

Upozorn?ní! Ji? jsem se setkal s tím, ?e n?které jednodu??í po?tovní servery (námi programátory doma ?asto vyu?ívané) neumí správn? ?ádkovat a automaticky tak zp?sobují vý?e mnou popsanou chybu s necht?ným vícenásobným za ?ádkováním v hlavi?ce. Proto pokud se s takovouto chybou setkáte i v mém vý?e uvedeném PHP scriptu, tak v??te, ?e chyba je ve va?em pro domácí ladící ú?ely vyu?ívaném po?tovním serveru. - U komer?ního webhostingu umo??ujícího provoz PHP script? jsem s touto chybou je?t? nesetkal!

V p?í?tím dílu vám kone?n? uká?i, jak se vypo?ádat s ?e?tinou a také jak za?ídit odeslání jednoho e-mailu na více adres.




Copyright supersvet.cz, 1998-2005