Trimiterea de mailuri
Stefanescu Mihai 2 years ago PHPIn primul rand trebuie sa setam totul corect in php.ini pentru a putea trimite mailuri. Deschide fisierul php.ini si cauta urmatoarea sectiune: [mail function]
Utilizatorii de windows trebuie sa asigure doua directive. Prima se numeste SMTP si defineste conexiunea la serverul de mail. A doua se numeste sendmail_from si defineste propria adresa de email.
Fisierul de configurare din windows ar trebuii sa arate ceva de genul:
[mail function] ; For Win32 only. SMTP = smtp.server.net ; For win32 only sendmail_from = [email protected]
In linux trebuie doar sa-i da-ti PHP-ului o locatie pentru aplicatia sendmail. Calea trebuie setata in directiva sendmail_path.
[mail function] ; For Win32 only. SMTP = ; For win32 only sendmail_from = ; For Unix only sendmail_path = /usr/sbin/sendmail -t -i
Trimiterea de mailuri textPHP pune la dispozitie functia mail() pentru a trimite emailuri. Aceasta functie are nevoie de 3 parametri pentru a functiona, adresa de email la care sunt trimise mailurile, subiectul si mesajul, dar mai sunt si 2 parametri aditionali.
mail( to, subject, message, headers, parameters );
Descrierea parametrilor:
Parametru | Descriere |
to | Obligatoriu. Specifica emailul destinatarului. |
subject | Obligatoriu. Specifica subiectul emailului. |
message | Obligatoriu. Mesajul emialului. |
headers | Optional. Specifica headere optionale precum Cc, Bcc, etc. |
parameters | Optional. Parametri optionali |
Imediat ce functia mail() este apelata PHP va incerca sa trimita emailul si va returna true in caz de succes si false in caz contrar.
Pot fi specificate mai multe recipiente pe post de prim argumen, separate de virgula.
$to = "[email protected]"; $subject = "Subiectul"; $message = "Mesajul."; $header = "From: [email protected] \r\n"; $retval = mail ($to,$subject,$message,$header); if( $retval == true ) { echo "Mail trimis!"; }else{ echo "Mailul nu a putut fi trimis!"; }
Trimiterea de emailuri HTML
Cand trimiti un mesaj folosind PHP tot continutul va fi tratat ca simplu text. Chiar daca includeti si tag-uri HTML in acel mesaj, tot v-or fi afisate ca simplu text. Dar PHP ne pune la dispozitie o optiune ce ne permite sa trimitem mailuri cu mesaj HTML.
Cand trimitem un mail putem specifica tipul de Mime.Iata si un exemplu:
<html> <head> <title>Trimitere email cu HTML</title> </head> <body> <?php $to = "[email protected]"; $subject = "Subiectul aici"; $message = "<b>Mesajul cu cod HTML.</b>"; $message .= "<h1>Continuarea mesajului.</h1>"; $header = "From:[email protected] \r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html\r\n"; $retval = mail ($to,$subject,$message,$header); if( $retval == true ){ echo "Mesaj Trimis!"; }else{ echo "Mesaj netrimis"; } ?> </body> </html>
Trimitere de emailuri cu Atasament
Pentru a trimite un email cu continut mixt trebuie sa setam header-ul Content-type la multipart/mixed. Apoi putem specifica un anumit atasament.
As putea sa va explic linie cu linie codul pe care am sa-l scriu mai jos, dar am sa va arat exemplul direct pentru ca este mai simplu sa vedeti voi cum sunt asezate toate lucrurile:
<html> <head> <title>Mailuri cu atasament</title> </head> <body> <?php $to = "[email protected]"; $subject = "Subiectul"; $message = "Mesajul"; # Deschidem fisierul $file = fopen( "/tmp/fisier.txt", "r" ); if( $file == false ) { echo "Nu pot deschide fisierul"; exit(); } # Citeste continutul si salveaza-l intr-o avriabila $size = filesize("/tmp/fisier.txt"); $content = fread( $file, $size); # encodare informatii pentru transmitere in siguranta $encoded_content = chunk_split( base64_encode($content)); # Obtinem un string de 32 bit folosind un md5 de time() $num = md5( time() ); # Definim headere $header = "From:[email protected]\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: multipart/mixed; "; $header .= "boundary=$num\r\n"; $header .= "--$num\r\n"; # mesajul $header .= "Content-Type: text/plain\r\n"; $header .= "Content-Transfer-Encoding:8bit\r\n\n"; $header .= "$message\r\n"; $header .= "--$num\r\n"; # atasamentul $header .= "Content-Type: multipart/mixed; "; $header .= "name=\"test.txt\"\r\n"; $header .= "Content-Transfer-Encoding:base64\r\n"; $header .= "Content-Disposition:attachment; "; $header .= "filename=\"test.txt\"\r\n\n"; $header .= "$encoded_content\r\n"; $header .= "--$num--"; # trimitere mail $retval = mail ( $to, $subject, "", $header ); if( $retval == true ) { echo "Mesaj trimis."; }else{ echo "Mesajul nu a putut fi trimis!"; } ?> </body> </html>
Avand in vedere ca aceasta este o lectie mai complicata am sa va rog sa postati orice intrebari aveti in comentarii (mai jos).