Curs Php-mysql

Part. 1

Pentru a expedia mesaje la o adresa de e-mail cu PHP, trebuie in primul rand ca serverul folosit sa ruleze PHP si, pentru a aplica exemplele de aici, sa aibe activata functia mail().

1. Expedierea mesajelor de e-mail ce contin tag-uri HTML

Procedeul este simplu, se aplica functia "mail()", dupa cum e explicat in prima parte (Lectia 31), folosind sintaxa:
                mail($to, $subiect, $mesaj, $from)
Pentru ca tag-urile HTML sa fie recunoscute si afisate corespunsator, trebuie adaugate header-ele specifice in corpul datelor ce contin adresa "From:" (din variabila $from). Aceste headere trebuie sa spuna receptorului sa recunoasca datele trimise ca fiind de tip text/html, si in general puteti folosi pe urmatoarele doua, impreuna:
                "MIME-Version: 1.0"
                "Content-type: text/html; charset=iso-8859-1"

Ca sa intelegeti mai bine, iata un exemplu simplu, cu o functie pe care o puteti folosi in script-urile dv. Explicatiile necesare sunt in cod.

<?php
// De la marplo.net

/*** Functia de trimitre mail-uri ***/

function send_mail($to, $from, $from_name, $sub, $msg){
 $eol = "\r\n"; // Pt. adaugare linie noua

 // Adauga corect adresa $from si headers
 $headers = "From: " . $from_name . "<" . $from . ">".$eol;
 $headers .= "MIME-Version: 1.0" . $eol;
 $headers .= "Content-type: text/html; charset=iso-8859-1" . $eol;

 // Executa expedierea datelor la serverul de mail
 // Daca au fost trimise cu succes returneaza mesaj de confirmare, in caz contrar, de eroare
 if (mail($to, stripslashes($sub), stripslashes($msg), $headers))
 return 'Mesajul a fost trimis cu succes';
 else return 'Eroare: mesajul nu a putut fi expediat';
}


// Cand vreti sa trimiteti un e-mail, apelati functia, cu cei cinci parametri
// Dupa cum e in continuare

$to = 'destinatar@mail.com'; // Adresa de mail a destinatarului
$from = 'expeditor@adresa.mail'; // Adresa de e-mail a expeditorului
$nume = 'Numele_Expeditorului';
$subiect = 'Un subiect pt. e-mail';
$mesaj = '<h3>Mesajul transmis</h3><div style="color:blue;">Poate contine <b>tags HTML</b>,<br />
 Si stiluri CSS adaugate in interiorul acestora, cu style="..."</div>.';

// Acum se apeleaza functia, cu aceste date pe care le va trimite la serverul de mail

$go_mail = send_mail($to, $from, $nume, $subiect, $mesaj);

echo $go_mail; // Afiseaza rezultatul
?>
- Daca doriti sa formatati textul folosind cod CSS, acesta trebuie adaugat prin atributul style="". Nu functioneaza cu tag <style>.
- Pentru aranjamente speciale este indicat sa utilizati tabele si coloane HTML

2. Trimitere e-mail-uri ce contin si atasamente

Pentru a include unul sau mai multe atasamente (fisiere, arhive) intr-un e-mail trimis cu PHP, procedeul e ceva mai complicat. Pe scurt, trebuie ca datele din acel fisier sa fie preluate (citite) de PHP, codate cu MIME base64 si impartite cu functia "chunk_split()". Apoi aceste date, impreuna cu tipul fisierului atasat, se adauga in corpul mesajului, alaturi de celelalte headere.
Puteti intelege cum se face daca studiati script-ul de mai jos, de asemenea, il puteti folosi in aplicatiile dv.. Este facut ca model pentru a trimite doua atasamente, poate fi modificat usor daca doriti sa trimiteti doar unul sau mai multe, gasiti explicatii in documentatia din script.
Important este sa specificati calea corecta catre fisierul atasat, astfel incat acesta sa poata fi deschis cu functia "fopen()", in cazul acestui model, cele doua fisiere se afla in acelasi director cu scriptul. Pentru fisiere de tip arhiva .rar si .zip nu e nevoie sa modificati tipul.
Vedeti detaliile din cod despre cum se adauga fisierele pt. atasament.

<?php
// Script PHP - Trimitere e-mail cu attasamente si tag-uri HTML
// De la marplo.net ( adaptat de la: http://www.codewalkers.com/c/b/Email-Code/ )

$attach = array(); // Defineste variabila ce va contine datele pt. atasamente

// Functia care trebuie apelata pt. a include mesajul si atasamentele in e-mail
function mail_att($to, $from, $sub, $msg, $attach) {
 // In continuare se 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".$msg."\n\n";

 // Aici se seteaza includerea atasamentelor (daca exista fisiere adaugate)
 if (count($attach)>=1) {
	// Parcurge matricea cu datele fisierelor
	for($i=0; $i<count($attach); $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 date 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";
	}
 }

 // Se apeleaza functia pt. trimiterea datelor la serverul de mail
 if (mail($to, $sub, $msg, $headers)) return "E-mail-ul a fost trimis";
 else return 'Eroare: mesajul nu a putut fi expediat';
}

// Aici se seteaza datele principale (sau pot fi preluate din formulare)
$to = 'destinatar@mail.com'; // Adresa de mail a destinatarului
$from = 'expeditor@adresa.mail'; // Adresa de e-mail a expeditorului
$subiect = 'Un subiect pt. e-mail';
$mesaj = '<h3>Mesajul transmis</h3><div style="color:blue;">Poate contine <b>tags HTML</b>,<br />
 Si stiluri CSS adaugate in interiorul acestora, cu style="..."</div> Precum si atasamente.';

// Se adauga datele pt. fisierele ce vor fi atasate
$attach[] = array('fisier.rar', 'Fisier1', 'application/octet-stream');
$attach[] = array('arhiva2.zip', 'Arhiva2', 'application/octet-stream');

// Daca doriti sa trimiteti doar un atasament, stergeti codul ce adauga pe al doilea
/* Daca doriti sa adaugati mai multe atasamente, repetati formula, sub celelalte: 
 $attach[] = array('cale/fisier', 'Nume_fisier', 'tip_fisier');
 - 'cale/fisier' e calea si numele fisierului pe server, ce trebuie atasat
 - 'Nume_fisier' e numele cu care va apare atassamentul in mail
 - 'tip_fisier' e tipul fisierului atasat, pt. arhive RAR, ZIP lasati 'application/octet-stream' */

// Acum e apelata functia ce prelucreaza datele si le trimite la serverul de mail
$go_mail = mail_att($to, $from, $subiect, $mesaj, $attach);
echo $go_mail;
?>
- Cu functia din acest script pot fi trimise si e-mail-uri fara atasament, doar cu continut text si cod HTML in mesaj, pt. asta trebuie sterse variabilele de tip "$attach[]".
- Scriptul a fost testat cu succes pe serverul acestui site. Pt. a functiona corect depinde si de setarile, permisiunile serverului, in principal sa aibe functia mail() activa. Part. 1

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag adauga rand nou in paragraf?
<b> <br> <p>
Prima linie ...<br>
Alta linie...
Ce proprietate CSS seteaza spatiu dintre litere?
text-size word-spacing letter-spacing
#id {
  letter-spacing: 2px;
}
Ce functie obtine accesul la un element HTML cu un anumit ID?
getElementById() getElementsByTagName() createElement()
var elm = document.getElementById("theID");
var content = elm.innerHTML;
alert(content);
Clic pe instructiunea "echo" utilizata corect.
echo "CoursesWeb.net" echo "CoursesWeb.net"; echo ""CoursesWeb.net";
echo "Adresa URL: http://CoursesWeb.net";
Care din urmatoarele expresii cu "paint" (a picta) se foloseste pentru forma Negativa?
will paint not paint have painted
She does not paint that landscape.
- Ea nu picteaza acel peisaj.
Care din urmatoarele expresii cu "cantar" (a canta) se foloseste pentru propozitie Negativa?
ir a cantar cantaba no cantar
Ella no canta esa canciĆ³n.
- Ea nu canta acel cantec.
Trimitere e-mail ce contine tag-uri HTML si atasamente

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (269997)
  2. Verbe modale - SHALL, SHOULD, OUGHT TO, WILL, WOULD, USED TO, BE TO, DARE (33195)
  3. Accentul si Pronuntia (27627)
  4. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (66767)
  5. Prezentul simplu - Exercitii si teste incepatori (68696)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1036)
  2. Gramatica limbii engleze - Prezentare Generala (654)
  3. Exercitii engleza - English Tests and exercises - Grammar (594)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (474)
  5. Coduri pt culori (395)