Trimiterea de mailuri

Stefanescu Mihai 2 years ago PHP
Acest articol face parte din cursul Toate lectiile PHP. Te poti inscrie la acest curs aici!

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

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

Ohfvax # 1 month ago purchase fenofibrate for sale <a href="https://fenoficor.com/">order tricor 160mg without prescription</a> buy fenofibrate 200mg generic
Ddorpq # 1 month ago brand zaditor <a href="https://flixitorp.shop/">buy zaditor 1mg online</a> how to buy tofranil
Fmwpgm # 1 month ago order minoxidil without prescription <a href="https://edxgetonline.shop/">buy ed pills no prescription</a> otc ed pills that work
Aiesrp # 1 month ago precose where to buy <a href="https://micronide.shop/">buy repaglinide 1mg sale</a> buy griseofulvin no prescription
Ujhits # 4 weeks ago order aspirin for sale <a href="https://imitonin.com/">imiquimod oral</a> buy zovirax cream
Cvrrih # 3 weeks ago purchase duphaston without prescription <a href="https://janozin.shop/">dapagliflozin 10 mg usa</a> pill empagliflozin
Jraquc # 3 weeks ago florinef 100 mcg canada <a href="https://pravinef.shop/">order florinef 100 mcg online</a> cheap imodium 2mg
Jbzzxh # 2 weeks ago buy monograph 600 mg sale <a href="https://colotazol.shop/">order pletal online</a> buy pletal 100mg without prescription
Didwym # 2 weeks ago order prasugrel 10 mg <a href="https://imocarbam.shop/">order prasugrel 10mg pill</a> tolterodine 1mg drug
Doelfo # 2 weeks ago ferrous sulfate 100mg cost <a href="https://detorbic.shop/">buy ascorbic acid online</a> buy sotalol 40 mg generic
Qtgghh # 2 weeks ago buy pyridostigmine 60 mg generic <a href="https://aelimax.com/">maxalt 5mg cheap</a> generic maxalt 5mg
contiendas # 2 weeks ago <a href="https://www.cagataycatal.net/cp9685-shoesen">cp9685</a> <a href="https://www.karunasoap.com/cute-dresses-11-year-olds-dressy">cute dresses 11 year olds</a> <a href="https://www.hotelruf.net/womens-miami-heat-vice-jersey-jerseysk">womens miami heat vice jersey</a> <a href="https://www.kaasajans.com/100mm-heels-louboutinq">100mm heels</a> <a href="https://www.chargefirst.net/top-5-selling-nba-jerseys-jerseybo">top 5 selling nba jerseys</a> <a href="https://www.nikknack.com/cute-knit-dresses-satyf">cute knit dresses</a> [url=http://www.contiendas.com/]contiendas[/url]
Xkpzjq # 1 week ago vasotec medication <a href="https://duphstine.com/">purchase lactulose bottless</a> buy lactulose generic
Otlkhf # 1 week ago order latanoprost sale <a href="https://aexeloda.shop/">buy exelon</a> buy rivastigmine 6mg for sale
Rbynce # 6 days ago where can i buy micardis <a href="https://molnenil.shop/">molnunat 200 mg cheap</a> movfor ca
Meiams # 4 days ago cenforce drug <a href="https://enapocen.com/">cenforce 50mg cheap</a> order aralen 250mg without prescription
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 โž•
Back to top
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.