Trimiterea de mailuri

PHP | Stefanescu Mihai | 2020-10-11

In 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).



Imi place ce faci aici
Daca iti place ce fac aici imi poti cumpara o cafea Buy Me a Coffee at ko-fi.com

Stefanescu Mihai
Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.
       

Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum.

Posteaza un comentariu

Comentarii

Inca nu au fost postate comentarii, fii primul care posteaza un comentariu!

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.

🗝ïļ Login 🌟 Register

🔖 Bookmarks ⊞
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord ⊞

Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.

⮆ïļ