A PHPMailer egy programkönyvtár, amely a PHP-n keresztül szabályozza az e-mailek továbbítását. A PHPMailer-t főként weboldalakon található kapcsolatfelvételi űrlapokhoz használják, de magáncélú e-mailek küldésére is alkalmas.

Mi az a PHPMailer?

A PHPMailer egy PHP-hez készült levelezési kiterjesztés, amelyet a PHP közösség fejlesztett ki és tart karban. A PHPMailerrel elküldött e-mailek kevésbé valószínű, hogy a spam mappába kerülnek, mint azok, amelyeket a PHP beépített e-mail funkciójával küldtek el. Ez azért van, mert a PHPMailerrel írt e-maileket SMTP-vel küldik el. Az SMTP a Simple Mail Transfer Protocol (egyszerű e-mail átviteli protokoll) rövidítése, és az e-mailek interneten történő átvitelére szolgál. Ezenkívül a PHPMailer a beépített e-mail funkcióval ellentétben támogatja a HTML-e-maileket és a mellékleteket is.

Mire használják a PHPMailert?

A PHPMailer használata kissé körülményesebb, mint más e-mail szolgáltatóké vagy a számítógépen integrált levelezőprogramoké, ezért felmerülhet a kérdés, hogy miért választják az emberek ezt a megoldást. A PHP keretrendszer egyszerűsíti az automatizált válaszok létrehozását, például az internetes áruházakban szükségeseket. Ezenkívül a PHPMailer weboldalakon található kapcsolatfelvételi űrlapokhoz is alkalmas.

Milyen követelmények vonatkoznak a PHPMailerre?

A PHPMailer használatához SMTP-kiszolgálóra van szükség. Ön dönti el, hogy egy szolgáltató levelezőkiszolgálóját használja, vagy saját kiszolgálót állít be. A PHP-kiterjesztés telepítéséhez a legjobb a Composer (a PHP csomagkezelője) használata.

Tipp

A PHP alapjainak elsajátítása egy másik fontos követelmény a PHPMailer használatához. A kezdőknek szóló PHP-tanfolyamunk segíthet, ha problémái vannak a PHP alapjaival.

A PHPMailer telepítése lépésről lépésre

1. lépés: Töltse le a PHPMailer aktuális verzióját

Töltse le a PHPMailer legújabb verzióját. Ezt megteheti a Composer segítségével vagy manuálisan a GitHubról.

1. lehetőség: Letöltés a Composer segítségével

Ha telepítette a Composer csomagkezelőt, akkor egyszerűen használhatja ezt a parancsot:

composer require phpmailer/phpmailer
bash

Fontos: ha a PHPMailert a Composerrel telepítette, akkor a levelek elküldéséhez be kell építenie a Composert a PHP-kódjába.

A következő kódsor használható:

require_once "vendor/autoload.php";
bash

A**„require_once”**kulcsszó biztosítja, hogy a Composer csak egyszer legyen beépítve. Ellenkező esetben programhibák léphetnek fel. A Composer segítségével történő telepítés ezzel befejeződött.

2. lehetőség: Közvetlenül a GitHubról történő letöltés

A PHPMailer forrásfájlok manuálisan is letölthetők, ha a megfelelő GitHub-tárházban a Code (Kód ) gombra kattintunk, és letöltjük a ZIP-fájlt. Ha a Git telepítve van a rendszerünkön, akkor a parancssori parancs segítségével klónozhatjuk a tárházat.

2. lépés: Fájlok kicsomagolása

Ha manuálisan töltötte le a PHPMailer forráskódját, akkor meg kell nyitnia a ZIP fájlokat. Válassza ki a PHPMailer telepítésének helyét, és illessze be a PHPMailert a szkriptjébe. Feltételezve, hogy a PHPMailer fájlokat egy PHPMailer nevű mappába csomagolta ki, a következő kódsorokat használhatja:

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

Hogyan küldhetünk e-maileket a PHPMailer segítségével lépésről lépésre

1. lépés: Névterek hozzáadása

Győződjön meg arról, hogy a névterek helyesek, hogy hozzáférhessen a PHPMailerhez. Ehhez Use utasításra van szükség, ezért a kódjának a következő sorokat kell tartalmaznia:

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

Az egyes osztályokhoz úgy férhet hozzá, hogy a neveket az utolsó perjel után feltünteti.

2. lépés: Hibaelhárítás

Bár a PHPMailer nagyon megbízható módszer az e-mailek küldésére, időnként hibák előfordulhatnak. A try catch utasítás beépítése az e-mail küldésbe megakadályozza, hogy a levelezési szerverén található érzékeny adatok hibaüzenetként eljussanak a felhasználókhoz:

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

3. lépés: Hitelesítés SMTP-vel

A PHPMailer használatához SMTP-vel kell hitelesítenie magát. Írja be a levelezési szerver címét a megfelelő protokoll ( TLS/SSL vagy SMTP) mellé, és adja meg a portot, a felhasználónevét és a jelszavát. A használt protokoll és port a levelezési szolgáltatótól függ. A megfelelő szerveradatok a levelezési szolgáltató weboldalán találhatók.

$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

ENCRYPTION_STARTTLS helyett ENCRYPTION_SMTPS titkosítási módszert is használhatja. ENCRYPTION_SMTPS módszernél a kapcsolat csak akkor jön létre, ha a TLS TLS aktív. Ez azt jelenti, hogy a szerverrel csak akkor lehet kommunikálni, ha a szerver támogatja a biztonságos átvitelhez szükséges titkosítási intézkedéseket. A StartTLS használatával a levelezési szerverhez való kapcsolat titkosítás nélkül jön létre. Csak utána kerül sor a titkosításra. Ha a TLS titkosítás nem alkalmazható, a további adatcsere titkosítás nélkül történik.

Az SMTPS magasabb szintű biztonságot kínál, míg a StartTLSjobb kompatibilitással rendelkezik. Kompatibilitása miatt a StartTLS általában az előnyben részesített választás.

4. lépés: Adja meg az e-mail címzettjét

Most már a szkriptben megadhatja az e-mail címzettjeit.

// 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

5. lépés: Adja hozzá az e-mail tartalmát

Ne felejtsd el az e-mail tartalmát. Ez általában egy tárgyból és egy szövegből áll, amely HTML és nem HTML formátumban is megadható. Fontos megjegyezni, hogy a régebbi szoftverek nem biztos, hogy képesek kezelni a jelenlegi HTML5 szabványt, ezért célszerű lehet az e-mailt HTML formátumban létrehozni.

A PHPMailer segítségével az addAttachment funkcióval könnyedén küldhet mellékleteket is. Képek, zenék, dokumentumok, videók és GIF-ek is elküldhetők a PHPMailer segítségével. A mellékleteket át is nevezheti egy opcionális második paraméterrel, amelyet a funkcióhoz továbbít.

$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

6. lépés: Használja a megfelelő karakterkódolást

Jó ötlet engedélyezni az UTF-8-at a PHPMailerben, hogy elkerülhetőek legyenek a megjelenítési hibák más nyelvek ékezetes betűinek feldolgozásakor, különösen különböző mellékletek használata esetén. Ehhez a következő kódsorokat kell hozzáadni a PHP szkripthez:

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

7. lépés: E-mail küldése

Most itt az ideje elküldeni az e-mailt. Ehhez használja a következő parancsot:

$mail->send();
php

A legjobb, ha az összes, a küldési kérésben szereplő kódot a szkript try utasítás blokkjába helyezi, így bármilyen hibát elkaphat.

Kódpélda e-mail küldésére PHPMailer segítségével

Az alábbiakban megtalálható az összes kód, amelyre szükség van ahhoz, hogy a PHPMailer segítségével egy kép mellékletet tartalmazó e-mailt küldjön a választott címzettnek:

<?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
Ugrás a főmenübe