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 este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Trimitere e-mail ce contine tag-uri HTML si atasamente

Last accessed pages

  1. Exercitii engleza - English Tests and exercises - Grammar (24404)
  2. Cursuri Limba Rusa (2056)
  3. Trecutul simplu si continuu - Past Tense Simple and Continuous (32094)
  4. Gramatica limbii engleze - Prezentare Generala (97282)
  5. Laravel - Instalare (853)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (3364)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1177)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (951)
  4. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (804)
  5. Exercitii engleza - English Tests and exercises - Grammar (753)