CS Asasini club
Recomandare


• Citeste regulament-ul
• Daca ai probleme la inregistrare anunta problemele forumului
• Urmeaza tutorialele pentru incepatori !
Regulament | Probleme | Tutoriale
Bine Ai Venit !


• Te rugam sa te inregistrezi !
• Inregistrarea este complet gratuita
• Nu dureaza mult
• Si se aciveaza pe loc

Iregistrare

Comunitatea Asasini



Asasini.4rumer.com



Atentie!: Cei fara mesaje pe site DELETE.
Recrutez membri pentru clan si moderatori la majoritatea sectiunilor.

Tutorial PHP: Trimiterea unui email cu PHP - Functia PHP

Vezi subiectul anterior Vezi subiectul urmator In jos

Tutorial PHP: Trimiterea unui email cu PHP - Functia PHP

Mesaj  verde la data de Mar Dec 23 2014, 16:52

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
// Verifica daca au fost trimise datele de la formular
if (isset($_POST['email']) && isset($_POST['mesaj'])) {
$to = '
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
$to = '
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.
$attach = array(); // variabila ce va contine datele pt atasamente

$to = '
nicu_bogd@yahoo.com';
$from = '
nicu_bogd@yahoo.com';
$subiect = 'Un subiect oarecare';
$mesaj = '

Un mesaj oarecareeee
// se adauga datele pt fisierele ce vor fi atasate
$attach[] = array('imagine.jpg', 'fisier1', 'image/jpeg');


// definesc header-ele pt e-mail
$headers = "From: ".$from;
$rand_hash = md5(time());
$mime_boundary = "==Multipart_Boundary_x".$rand_hash."x";

$headers .= "\nMIME-Version: 1.0\n".
"Content-Type: multipart/mixed;\n".
' boundary="'.$mime_boundary.'"';

$msg .= "Un multi-part mesaj in MIME format.\n\n".
'--'.$mime_boundary."\n".
"Content-Type:text/html; charset=\"iso-8859-1\"\n".
"Content-Transfer-Encoding: 7bit\n\n".$mesaj."\n\n";

//se seteaza includerea fisierelor (daca exista fisiere adaugate)
if (count($attach)>=1) {
// Parcurge matricea cu datele fisierelor
for($i=0; $i // deschide fisierul si preia datele din el
if ($file = fopen($attach[$i][0],'rb')) {
$data = fread($file, filesize($attach[$i][0]));
fclose($file);
}

// codeaza datele preluate cu MIME base64 si le separa in parti mai mici
$data = chunk_split(base64_encode($data));

// adauga datele fisierului in mesajul mail-ului
$msg .= '--'.$mime_boundary."\n".
'Content-Type: '.$attach[$i][2].";\n".
' name="'.$attach[$i][1]."\"\n".
"Content-Transfer-Encoding: base64\n\n".$data ."\n\n".
'--'.$mime_boundary."\n";
}
}

// trimite e-mail-ul
if (mail($to, $subiect, $msg, $headers)) {
echo 'Mesaj trimis';
}
else {
echo 'Mesaj netrimis';
}
?>


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".



verde
Moderator
Moderator

Mesaje : 2050
Data de inscriere : 27/12/2011
Varsta : 27
Localizare : Baia Mare

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum