Tutorial PHP: Trimiterea unui email cu PHP - Functia PHP


Cu ajutorul php putem foarte usor sa trimitem un e-mail la o anumita adresa din pagina web. Acest lucru este util de exemplu in cazul unui formular de contact. Se poate desigur sa lasam pe pagina adresa de e-mail insa nu este indicat deoarece poate ajunge in mainile oricui intra pe pagina si mai important poate fi citita de programe bot care trimit spam-uri. Cel mai indicat este un formular de contact, securizat din punct de vedere abuziv si completarea corecta a datelor.
Ca sa trimiteti un e-mail de pe localhost aveti nevoie de un server de e-mail, daca insa folositi un serviciu de webhost, acestea au deja un server de e-mail instalat (majoritatea)

Trimiterea mesajelor
SMTP (Simple Mail Transfer Protocol) reprezinta protocolul standard pentru transferul mesajelor prin intermediul internetului la o adresa de e-mail.
Pentru a putea trimite un e-mail se foloseste functia mail() ce are sintaxa:

    mail('catre', 'subiect', 'mesaj')

Unde "catre" reprezinta adresa de email unde va fi trimis mesajul, "subiect" reprezinta subiectul mesajului iar "mesaj" reprezinta mesajul trimis.
Functia mai poate sa contina si un al patrulea atribut optional "from" care specifica locatia de unde a fost trimis mesajul. Daca acest atribut nu este specificat, serverul va trimite mesajul in functie de cum este configurat.
Aceste atribute pot fi desigur preluate dintr-un formular cu $_POST.
Functia mail() returneaza TRUE daca mesajul a fost trimis, altfel returneaza FALSE.


Exemplu
adresa@yahoo.com
'; $subiect = 'Mesaj de pe site'; $mesaj = $_POST['mesaj']; $from = 'From: '. $_POST['email']; //Trimite mesajul prin e-mail if (mail($to, $subiect, $mesaj, $from)) { echo 'Mesajul a fost trimis.'; } else { echo 'Mesajul nu a fost trimis.'; } } ?>

In primul rand se verifica cu functia isset() daca au fost trimise din formular e-mail-ul persoanei si mesajul, dupa care se declara fiecare variabila si se trimite mesajul prin e-mail.
Observati faptul ca variabila $from contine sirul "From: " inainte de adresa preluata din formular. Acest lucru este obligatoriu.


Trimiterea tagurilor html prin e-mail
Implicit, functia mail() trimite doar mesaje text simple fara taguri html. pentru a putea trimite si taguri html prin e-mail este necesara adaugarea anumitor header-e in variabila $from. Aceste hearde-e spun receptorului ca datele trimise contin si taguri html. pentru acest lucru se folosesc urmatoarele doua sintaxe:

MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1

Exemplu
adresa@mail.com
'; $from = ' adresa@mail.com'; $subiect = 'Un subiect oarecare'; $mesaj = '

Un mesaj

Un mesaj oarecareeee
'; $ln = "\r\n"; // Pentru adaugare linie noua $headers = "From: ".$from.$ln; $headers .= "MIME-Version: 1.0".$ln; $headers .= "Content-type: text/html; charset=iso-8859-1".$ln; if (mail($to, $subiect, $mesaj, $headers)) { echo 'Mesaj trimis'; } else { echo 'Mesaj netrimis'; } ?>

Trimiterea atasamentelor prin e-mail
Trimiterea fisierelor prin e-mail este o munca mai greoaie. Pentru a intelege mai bine studiati urmatorul exemplu.
nicu_bogd@yahoo.com
'; $from = ' nicu_bogd@yahoo.com'; $subiect = 'Un subiect oarecare'; $mesaj = '

Un mesaj oarecareeee

=1) { // Parcurge matricea cu datele fisierelor for($i=0; $i

Scriptul trimite si taguri html in corpul mesajului. Pentru a trimite mai multe fisiere odata trebuie sa adaugati mai multe linii de genul acesta:

$attach[] = array('imagine.jpg', 'fisier1', 'image/jpeg');

In care argumentul al treilea difera de tipul fisierului.
De exemplu pentru fisiere cu extensia "jpg" argumentul al treilea va fi "image/jpeg", pentru fisiere cu extensia "txt" argumentul va fi "text/plain".

Niciun comentariu: