Integrarea unei biblioteci SMTP în aplicația dvs. necesită cunoștințe de programare PHP. Dacă nu sunteți sigur cum să integrați scriptul exemplu din acest tutorial în aplicația dvs. PHP, va recomandam să contactați un dezvoltator PHP cu abilitățile și pregătirea necesare pentru a face acest lucru pentru dvs.
Dacă aplicația dvs. trebuie să trimită e-mailuri, aveți două opțiuni principale:
-
Utilizați funcția
mail()a PHP -
Utilizați o bibliotecă SMTP
Avantajul utilizării funcției mail() a PHP este că este incredibil de simplă și ușor de utilizat. Cu toate acestea, există câteva dezavantaje:
-
Furnizorii de e-mail bazați pe Microsoft marchează mesajele create cu
mail()ca spam deoarece inregistrarile DKIM si SPF sunt incorecte. -
Funcția
mail()operează într-un mod sincron, forțând aplicația să aștepte finalizarea tranzacției SMTP înainte de a putea face altceva.
Când utilizați o bibliotecă SMTP precum PHPMailer, nu veți intampina aceleași dezavantaje, dar necesită puțin mai multă configurare.
ATENTIE: In mediul shared hosting functia PHP mail() nu este disponibila din motive de securitate.
Procedură
Acest tutorial are ca scop să facă procesul de configurare a bibliotecii PHPMailer foarte rapid și simplu.
Metoda liniei de comandă (recomandată)
Notă: Vă rugăm să înlocuiți username cu numele de utilizator al contului dvs. cPanel
-
Conectați-vă in cPanel si apoi in terminalul SSH
-
Navigați in subdirectorul unde ar trebui creat scriptul:
mkdir /home/username/PHPMailerTest cd /home/username/PHPMailerTest -
Clonați biblioteca PHPMailer în locație cu comanda
git clone:git clone https://github.com/PHPMailer/PHPMailer -
Parcurgeti documentația aici: Documentația PHPMailer pe Github
-
Creați scriptul copiind scriptul exemplu furnizat mai jos în următorul fișier:
/home/username/PHPMailerTest/testScript.php -
Modificați scriptul cu personalizările dvs.
-
Testați scriptul cu următoarea comandă:
php /home/username/PHPMailerTest/testScript.php
Metoda File Manager
Deși metoda liniei de comandă este recomandată, puteți utiliza această metodă dacă pachetul dvs. de găzduire nu oferă acces la SSH sau pictograma Terminal.
Notă: Această metodă necesită să puneți scriptul într-o locație public accesibilă pe server. Acest lucru poate reprezenta un risc de securitate și este recomandat doar dacă fișierul este protejat de ceva precum funcția Directory Privacy. Aceasta ar fi utilizată doar în timpul testării. După finalizarea testării, ați muta scriptul mailer într-o locație protejată și apoi apelati-l din aplicația dvs. PHP. Vă rugăm să contactați un dezvoltator PHP dacă nu sunteți sigur cum să apelați scriptul din aplicația dvs. PHP.
-
Conectați-vă la contul cPanel
-
Configurați Directory Privacy pentru folderul dvs. "public_html".
-
Sub secțiunea Files, căutați pictograma "File Manager".
-
Faceți clic pe directorul "public_html" pentru a-l deschide.
-
Descărcați biblioteca PHPMailer ca fișier zip: PHPMailer pe Github
-
Încărcați fișierul zip în FileManager cu butonul "Upload" din meniul orizontal de sus.
-
Utilizați butonul "Extract" din meniul orizontal al File Manager pentru a extrage biblioteca PHPMailer.
-
Creați un nou fișier PHP numit "test.php" în directorul "public_html" cu conținutul scriptului exemplu de mai jos.
-
Actualizați scriptul cu personalizările dvs.
-
Testați scriptul vizitând URL-ul fișierului (inlocuiti domeniuldvs.ro cu numele real al domeniului dvs.):
https://domeniudvs.ro/test.php
Script Exemplu
Următorul script exemplu este un bun punct de plecare. Este compatibil cu PHPMailer 6.10.0. Acest script exemplu utilizează declarații require pentru cele trei fișiere PHP de care PHPMailer are nevoie pentru a funcționa în cel mai simplu mod.
Acest script este configurat pentru a produce ieșire detaliată de depanare în mod implicit. Scriptul necesită modificări pentru a funcționa în mediul dvs. specific. Trebuie să actualizați următoarele:
-
Căile către fișierele PHP în declarațiile
require -
$mail->Host- Utilizați numele serverului SMTP. Numele domeniului dvs. poate fi utilizat în unele cazuri. -
$mail->Username- Utilizați adresa de e-mail a unui cont de e-mail valid pe serverul dvs. -
$mail->Password- Utilizați parola pentru contul de e-mail valid pe serverul dvs. -
$mail->setFrom- Utilizați aceeași adresă ca în configurația Username de mai sus. -
$mail->addAddress- Setați aceasta la adresa destinatarului. -
$mail->addReplyTo- Setați aceasta la aceeași adresă ca în configurația Username de mai sus. -
$mail->addCC- Eliminați aceasta sau setați-o la o adresă de destinatar CC. -
$mail->addBCC- Eliminați aceasta sau setați-o la o adresă de destinatar BCC. -
$mail->addAttachment- Eliminați aceasta sau actualizați calea către un fișier de atașat. -
$mail->Subject- Actualizați aceasta la subiectul dorit. -
$mail->Body- Actualizați aceasta la conținutul HTML dorit. Acesta nu trebuie să fie HTML, dar poate conține HTML. -
$mail->AltBody- Actualizați aceasta la o versiune text simplu a conținutului/mesajului dvs.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/Exception.php';
require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/PHPMailer.php';
require '/home/cpanelusername/PHPMailerTest/PHPMailer/src/SMTP.php';
// Instantiation and passing [ICODE]true[/ICODE] enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'user@example.com'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, [ICODE]ssl[/ICODE] also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('recipient1@example.net', 'Joe User'); // Add a recipient
$mail->addAddress('recipient2@example.com'); // Name is optional
$mail->addReplyTo('info@example.com', 'Information');
$mail->addCC('cc@example.com');
$mail->addBCC('bcc@example.com');
// Attachments
$mail->addAttachment('/home/cpanelusername/attachment.txt'); // Add attachments
$mail->addAttachment('/home/cpanelusername/image.jpg', 'new.jpg'); // Optional name
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
