PHP pre začiatočníkov - Email, 6.diel

PHP pre začiatočníkov - Email, 6.diel

V tejto časti nášho seriálu sa dozviete ako odoslať email pomocou skriptu napísaného v jazyku PHP resp. sa naučíte používať funkciu mail().

V tejto časti si preberiem odoslanie emailu pomocou PHP. Jednoduchý proces nám odošle email v parametroch:

mail(prijemca, predmet, text)

Pri odosielaní emailu nezabúdame na to, že ak email odosielame s osobného počítaču a neobsahuje SMTP, tak email nebude možné odoslať. Funkcia mail() vracia hodnotu 1 alebo 0 čo vyjadruje úspešnosť akcie. Môže to byť po pozitívnej stránke(odoslané) alebo po negatívnej(neodoslané).

Pri emaili môžeme ešte doplniť adresu odosielateľa a to nasledovne.:

mail(prijemca, predmet, text, from:odosielatel);

Tento argument je nepovinný a nie je potrebné ho uvádzať.

Teraz sa presuniem k ostrému odoslaniu emailu:

<?php

$prijemca = "email@domena.tld";
$predmet = "Test";
$sprava = "Toto je testovacia textová správa, ktorá bude odoslaná pomocou jazyka PHP";

mail("$prijemca", "$predmet", "$sprava");

Príjemcu sme si dosadili pomocou premenných ale ak chcete posielať email staticky, tak je možné to napísať aj takto:

mail("email@domena.tld", "test", "Toto je testovacia textová 
správa, ktorá bude odoslaná pomocou jazyka PHP");

Teraz sa dostaneme k prekódovaniu emailu. Povedzme, že tieto premenné už obsahujú nejakú hodnotu.

$adresa_prijemcu = elektronická adresa pošty
$subject = subject, proste predmet;
$text = vlastni telo zpravy;
Prekódovanie na charset ISO-8859-2. Nasleduje prevedenie z windows-1250 do ISO-8859-2.
$text_1 = StrTr($text,
"x8Ax8Dx8Ex9Ax9Dx9E",
"xA9xABxAExB9xBBxBE");
Nasleduje prekódovanie do Base64
$text_2 = Base64_Encode($text_1);
Teraz pridanie hlavičiek.
$headers .= "MIME-Version: 1.0".
"Content-Type: text/plain; charset=iso-8859-2".
"Content-Transfer-Encoding: base64";
A nakoniec odošleme email.
@mail($adresa_prijemcu,$subject,$text_2,$headers);

Ak používame windows, tak neptrebujeme kódovanie.
Prekódovanie do Base64.
$text_2 = Base64_Encode($text);
Pridanie hlavičiek
$headers .= "MIME-Version: 1.0".
"Content-Type: text/plain; charset=windows-1250".
"Content-Transfer-Encoding: base64";
A odoslanie emailu.
@mail($adresa_prijemcu,$subject,$text_2,$headers);

Keď už som pritom, tak mi nedá vysvetliť aj niečo na čo som zabudol. Všimli ste si pri funckí mail() znak @. Tento znak je tam s dôvodu potláčania chýb. Ak nastane na tom mieste chyba v skripte(nie v syntaxi), tak sa chyba nevypíše. Samozrejme táto vec je použiteľná pri všetkých funkciách v php nielen pri mail().

Toto je koniec časti o emailoch a nabudúce si povieme niečo o externých súboroch.
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 30.04.2005 17:10

Komentáre

#1 wotan E-mail
24.09.2007 20:57
Ako mam toto chapat: ak email odosielame s osobného počítaču a neobsahuje SMTP, tak email nebude možné odoslať ? Ved predsa mail odosielam zo servera, kde mam svoju stranku. Nezavisi to od SMTP osobneho pocitaca uzivatela...

#2 admin Web E-mail
24.09.2007 23:07
admin Chápte to proste tak, že kde nie je SMTP server, e-mail sa neodošle. 99.9% webhostingov SMTP server určite má, takže nie je nutné sa obávať nefunkčnosti funkcie mail().

#3 ombre
27.09.2007 15:52
mala poznamka

$headers .= "MIME-Version: 1.0
".

"Content-Type: text/plain; charset="iso-8859-2"
".

"Content-Transfer-Encoding: base64
";


charset="iso-8859-2" tu nebude špatiť uvodzovka?? ked je premenna v rovnakych uvodzovkach?

#4 admin Web E-mail
27.09.2007 22:57
admin [3] ombre, opravené.

#5 Michal
14.02.2008 15:12
ked takto odosielam mail tak mi pride z adresy uid98@mojwebhosting.sk ...ako spravim aby mi ten mail prisiel z admin@mojadomena.sk ?

#6 admin Web E-mail
14.02.2008 20:28
admin [5] Michal, musíte nastaviť hlavičku ($headers) from.

#7 Stelmi Web E-mail
02.07.2009 11:31
Zdravim, potrebujem poradit.

Odosielam html e-mail pomocou fcie mail() a mam nastavenu diakritiku na utf-8 takto: "Content-Type: text/html; charset=utf-8"

Vsetky znaky v tele emailu sa zobrazuju dobre.
Avsak ked mam definovaneho odosielatela v tomto tvare: "From: Môj počítač <mojpocitac@adresa.xx>",tak mi uplne ignoruje diakritiku, a miesto spravneho vypisania textu "Môj počítač" to vypise klikihaky.

#8 kuko
17.07.2009 16:05
[7] Stelmi, s niečím podobným potrebujem poradiť aj ja.. Potrebujem ale skonvertovať predmet (z US-ASCII v ktorom je štandardne formátovaný) do UTF-8 .. Ak vieš poraď budem vďačný

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti