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 defineste zona de click intr-o harta creata dintr-o imagine?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Ce proprietate CSS indica ce sa se intample cand continutul unui element depaseste dimensiunile lui?
display overflow position
#id {
  overflow: auto;
}
Clic pe evenimentul care este declansat cand mouse-ul e deasupra unui obiect.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Sa ai Viata Buna");
}
Indicati variabila PHP ce contine datele adaugate in adresa URL, dupa caracterul "?".
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Clic pe pronumele reflexiv care e potrivit in propozitia: "Marc is the boy ... won the prize".
who which whoever
Marc is the boy who won the prize.
- Marc e baiatul care a castigat premiul.
Clic pe pronumele reflexiv care e potrivit in propozitia: "Voy a ver al pintor de ... les hablé ayer".
que quien cuyo
Voy a ver al pintor de quien les hablé ayer.
- Ma duc sa vad pictorul despre care ti-am vorbit ieri.
Trimitere e-mail ce contine tag-uri HTML si atasamente

Last accessed pages

  1. Expresii uzuale din Limba Spaniola (A-D) (5860)
  2. OOP - Clase si Obiecte - Creare Clasa (6700)
  3. Tutoriale JavaScript (3508)
  4. Creare efecte de miscare (787)
  5. Curs CSS Online Tutoriale CSS3 (116710)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1076)
  2. Curs HTML gratuit Tutoriale HTML5 (885)
  3. Coduri pt culori (625)
  4. Creare si editare pagini HTML (517)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (469)
Chat
Discuta sau lasa un mesaj pt. ceilalti utilizatori
Full screenInchide