PHPMailer este o bibliotecă de programe care reglementează transferul de e-mailuri prin PHP. PHPMailer este utilizat în principal pentru formularele de contact de pe site-uri web, dar poate fi utilizat și pentru trimiterea de e-mailuri private.

Ce este PHPMailer?

PHPMailer este o extensie de e-mail pentru PHP, dezvoltată și întreținută de comunitatea PHP. E-mailurile trimise cu PHPMailer au mai puține șanse să ajungă în folderul de spam decât cele trimise cu funcția de e-mail încorporată în PHP. Acest lucru se datorează faptului că e-mailurile scrise cu PHPMailer sunt trimise folosind SMTP. SMTP înseamnă Simple Mail Transfer Protocol și este utilizat pentru transferul e-mailurilor pe internet. În plus, PHPMailer acceptă și e-mailuri HTML și atașamente, spre deosebire de funcția de e-mail încorporată.

La ce se folosește PHPMailer?

PHPMailer este puțin mai dificil de utilizat în comparație cu alți furnizori de servicii de e-mail sau programe de e-mail integrate pe computer, ceea ce vă poate face să vă întrebați de ce oamenii aleg să îl utilizeze. Cadrul PHP simplifică crearea de răspunsuri automate, cum ar fi cele necesare pentru un magazin web. În plus, PHPMailer este potrivit și pentru formularele de contact de pe site-uri web.

Care sunt cerințele pentru PHPMailer?

Aveți nevoie de un server SMTP pentru a utiliza PHPMailer. Puteți alege să utilizați un server de e-mail de la un furnizor sau să configurați propriul server. Cel mai bine este să utilizați Composer (un manager de pachete pentru PHP) pentru a instala extensia PHP.

Sfat

Stăpânirea noțiunilor de bază ale PHP este o altă cerință importantă pentru utilizarea PHPMailer. Tutorialul nostru PHP pentru începători vă poate ajuta dacă aveți probleme cu noțiunile de bază ale PHP.

Cum se instalează PHPMailer pas cu pas

Pasul 1: Descărcați versiunea actuală a PHPMailer

Descărcați cea mai recentă versiune a PHPMailer. Puteți face acest lucru cu Composer sau manual de pe GitHub.

Opțiunea 1: Descărcare folosind Composer

Dacă ați instalat managerul de pachete Composer, puteți utiliza pur și simplu această comandă:

composer require phpmailer/phpmailer
bash

Important: dacă ați instalat PHPMailer cu Composer, trebuie să includeți Composer în codul PHP pentru a putea trimite e-mailuri.

Se poate utiliza următoarea linie de cod:

require_once "vendor/autoload.php";
bash

Cuvântul cheie**„require_once”**asigură că Composer este inclus o singură dată. În caz contrar, pot apărea erori de program. Instalarea folosind Composer este acum completă.

Opțiunea 2: Descărcați direct de pe GitHub

Fișierele sursă PHPMailer pot fi descărcate și manual, făcând clic pe butonul Code din depozitul GitHub corespunzător și descărcând fișierul ZIP. Dacă Git este instalat pe sistemul dvs., puteți clona depozitul folosind o comandă din linia de comandă.

Pasul 2: Dezarhivați fișierele

Dacă ați descărcat manual codul sursă PHPMailer, trebuie să deschideți fișierele ZIP. Selectați locația în care doriți să instalați PHPMailer și includeți PHPMailer în scriptul dvs. Presupunând că ați despachetat fișierele PHPMailer într-un folder numit PHPMailer, puteți utiliza următoarele linii de cod:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
/*Class for handling exceptions and errors*/
require 'C:/PHPMailer/src/Exception.php';
/*PHPMailer class*/
require 'C:/PHPMailer/src/PHPMailer.php';
/*SMTP class needed to connect to an SMTP server*/.
require 'C:/PHPMailer/src/SMTP.php';
/*When creating a PHPMailer object, pass the parameter ‘true’ to activate exceptions (messages in the event of an error)*/
$email = new PHPMailer(true);
php

Cum să trimiteți e-mailuri cu PHPMailer pas cu pas

Pasul 1: Includeți spațiile de nume

Asigurați-vă că spațiile de nume sunt corecte pentru a accesa PHPMailer. Pentru aceasta sunt necesare Use instrucțiuni, astfel încât codul dvs. trebuie să conțină următoarele linii:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
php

Puteți accesa cursurile individuale includând numele după ultima bară oblică.

Pasul 2: Detectarea erorilor

Deși PHPMailer este o metodă foarte fiabilă de trimitere a e-mailurilor, pot apărea erori din când în când. Includerea unei instrucțiuni try catch în trimiterea unui e-mail va împiedica trimiterea datelor sensibile de pe serverul dvs. de e-mail către utilizatori sub forma unui mesaj de eroare:

try {
    // Try to create a new instance of PHPMailer class, where exceptions are enabled
    $mail = new PHPMailer (true);
// (...)
} catch (Exception $e) {
        echo "Mailer Error: ".$e->getMessage();
}
php

Pasul 3: Autentificare cu SMTP

Pentru a utiliza PHPMailer, trebuie să vă autentificați cu SMTP. Introduceți adresa serverului dvs. de e-mail lângă protocolul corespunzător ( TLS/SSL sau SMTP) și includeți portul împreună cu numele de utilizator și parola. Protocolul și portul pe care le utilizați depind de furnizorul dvs . de servicii de e-mail. Datele respective ale serverului pot fi obținute de pe site-ul web al furnizorului de servicii de e-mail.

$mail->isSMTP();
$mail->SMTPAuth = true;
// Personal data
$mail->host = "smtp.domain.com";
$mail->Port = 587;
$mail->username = "name.surname@domain.com";
$mail->password = "testpassword4321";
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
php

În locul ENCRYPTION_STARTTLS, puteți utiliza și ENCRYPTION_SMTPS ca metodă de criptare. Cu ENCRYPTION_SMTPS, conexiunea este stabilită numai dacă TLS TLS este activ. Aceasta înseamnă că comunicarea cu un server este posibilă numai dacă serverul acceptă măsurile de criptare necesare pentru o transmisie sigură. Cu StartTLS, conexiunea la serverul de e-mail este stabilită fără criptare. Criptarea se aplică numai după aceea. Dacă nu este posibilă aplicarea criptării TLS, restul schimbului de date va avea loc fără criptare.

SMTPS oferă un nivel mai ridicat de securitate, în timp ce StartTLSare o compatibilitate mai bună. Datorită compatibilității sale, StartTLS este, în general, opțiunea preferată.

Pasul 4: Indicați destinatarul e-mailului

Acum puteți desemna destinatarii e-mailului dvs. în script.

// Sender
$mail->setFrom('info@example.com', 'name');
// Recipient, the name can also be stated
$mail->addAddress('info@example.com', 'name');
// Copy
$mail->addCC('info@example.com');
// Blind copy
$mail->addBCC('info@example.com', 'name');
php

Pasul 5: Adăugați conținutul e-mailului

Nu uitați conținutul e-mailului. Acesta constă, de obicei, dintr-un subiect și un text, care poate fi specificat atât în versiune HTML, cât și non-HTML. Este important să rețineți că software-ul mai vechi s-ar putea să nu poată gestiona standardul HTML5 actual, așa că ar fi o idee bună să creați e-mailul folosind HTML.

De asemenea, puteți trimite cu ușurință atașamente cu PHPMailer folosind funcția addAttachment. Imaginile, muzica, documentele, videoclipurile și GIF-urile pot fi trimise și cu PHPMailer. De asemenea, puteți redenumi atașamentele cu un al doilea parametru opțional, care este transferat către funcție.

$mail->isHTML(true);
// Subject
$mail->Subject = 'The subject of your mail';
// HTML content
$mail->Body = 'The mail text as HTML content. <b>bold</b> elements are allowed.';
$mail->AltBody = 'The text as a simple text element';
// Add attachment
$mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
php

Pasul 6: Utilizați codificarea corectă a caracterelor

Este recomandat să activați UTF-8 în PHPMailer pentru a preveni apariția erorilor de afișare la procesarea literelor accentuate din alte limbi, în special atunci când utilizați atașamente diferite. Puteți face acest lucru adăugând următoarele linii de cod în scriptul PHP:

$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
php

Pasul 7: Trimiteți e-mailul

Acum este momentul să trimiteți e-mailul. Pentru aceasta, utilizați următoarea comandă:

$mail->send();
php

Este recomandat să plasați tot codul afișat în cererea de trimitere în blocul de instrucțiuni try al scriptului dvs., astfel încât să puteți detecta eventualele erori.

Exemplu de cod pentru trimiterea unui e-mail cu PHPMailer

Mai jos găsiți tot codul necesar pentru a trimite un e-mail conținând o imagine atașată către un destinatar la alegere, folosind PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
// Enable or disable exceptions via variable
$debug = true;
try {
    // Create instance of PHPMailer class
    $mail = new PHPMailer($debug);
     if ($debug) {
         // issue a detailed log
        $mail->SMTPDebug = SMTP::DEBUG_SERVER; 
    }
    // Authentication with SMTP
    $mail-> isSMTP();
    $mail->SMTPAuth = true;
    // Login
    $mail->Host = "smtp.domain.com";
    $mail->Port = 587;
    $mail->Username = "name.surname@domain.com";
    $mail->Password = "testpassword4321";
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->setFrom('info@example.com', 'name');
    $mail->addAddress('info@example.com', 'name');
    $mail-> addAttachment("/home/user/Desktop/sampleimage.png", "sampleimage.png");
    $mail->CharSet = 'UTF-8';
    $mail->Encoding = 'base64';
    $mail->isHTML(true);
    $mail->Subject = 'The subject of your mail';
    $mail->Body = 'The mail text in HTML content. <b>bold</b> elements are allowed.';
    $mail->AltBody = 'The text as a simple text element';
    $mail->send();
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: ".$e->getMessage();
}
php
Mergi la meniul principal