# Kaip siųsti el. laiškus naudojant PHPMailer

„PHPMailer“ – tai **programinė biblioteka**, skirta [elektroninio pašto siuntimui](https://www.ionos.com/lt-lt/digitalguide/el-pastas/techniniai-klausimai/elektroninio-laisko-siuntimas-kaip-tai-veikia/) per PHP valdyti. „PHPMailer“ dažniausiai naudojamas svetainių **kontaktinėms formoms**, tačiau juo taip pat galima siųsti asmeninius laiškus.

## Kas yra PHPMailer?

„PHPMailer“ – tai PHP **pašto išplėtimas**, kurį kuria ir prižiūri PHP bendruomenė. Su PHPMailer išsiųsti laiškai rečiau patenka į šlamšto aplanką nei tie, kurie išsiunčiami naudojant į PHP įdiegtą pašto funkciją. Taip yra todėl, kad su PHPMailer parašyti laiškai siunčiami naudojant SMTP. SMTP reiškia „Simple Mail Transfer Protocol“ (paprastą pašto perdavimo protokolą) ir yra naudojamas laiškams perduoti internetu. Be to, PHPMailer, skirtingai nei įdiegta pašto funkcija, taip pat palaiko HTML laiškus ir priedus.

## Kam naudojamas PHPMailer?

Palyginti su kitais el. pašto paslaugų teikėjais ar kompiuteryje įdiegtomis el. pašto programomis, „PHPMailer“ naudoti šiek tiek sudėtingiau, todėl galite stebėtis, kodėl žmonės nusprendžia jį rinktis. Šis PHP frameworkas supaprastina automatinių atsakymų, pavyzdžiui, tokių, kokių reikia **internetinei parduotuvei**, kūrimą. Be to, „PHPMailer“ taip pat tinka svetainių **kontaktinėms formoms**.

## Kokie yra PHPMailer reikalavimai?

Norint naudoti „PHPMailer“, reikalingas SMTP serveris. Galite pasirinkti, ar naudoti paslaugų teikėjo [pašto serverį](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS"), ar sukonfigūruoti **savo**. PHP plėtinį geriausia įdiegti naudojant „Composer“ (PHP paketų tvarkyklę).

Tip PHP pagrindų įsisavinimas yra dar vienas svarbus reikalavimas norint naudotis „PHPMailer“. Jei turite sunkumų su PHP pagrindais, jums gali padėti mūsų PHP pamoka pradedantiesiems.

## Kaip žingsnis po žingsnio įdiegti PHPMailer

### 1 žingsnis: Atsisiųskite naujausią „PHPMailer“ versiją

Atsisiųskite **naujausią „PHPMailer“ versiją**. Tai galite padaryti naudodami „Composer“ arba rankiniu būdu iš „GitHub“.

#### 1 variantas: Atsisiųsti naudojant „Composer“

Jei įdiegėte paketų tvarkyklę [„Composer“](https://getcomposer.org/ "Composer website"), galite tiesiog naudoti šią komandą:

```bash
composer require phpmailer/phpmailer
```

**Svarbu**: jei PHPMailer įdiegėte naudodami „Composer“, norėdami siųsti laiškus, savo PHP kode turite įtraukti „Composer“.

Galima naudoti šią kodų eilutę:

```bash
require_once "vendor/autoload.php";
```

Raktinis žodis\*\*„require\_once“\*\*užtikrina, kad „Composer“ bus įtrauktas tik vieną kartą. Priešingu atveju gali kilti programos klaidų. Įdiegimas naudojant „Composer“ dabar baigtas.

#### 2 variantas: Atsisiųskite tiesiogiai iš „GitHub“

PHPMailer šaltinio failus taip pat galima atsisiųsti **rankiniu būdu** – tam reikia paspausti mygtuką **„Code“** atitinkamame [„GitHub“ repozitoriume](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") ir atsisiųsti ZIP failą. Jei jūsų sistemoje įdiegta Git, repozitoriumą taip pat galima klonuoti naudojant komandinės eilutės komandą.

### 2 žingsnis: Išpakuokite failus

Jei PHPMailer šaltinio kodą atsisiuntėte rankiniu būdu, turite išpakuoti ZIP failus. Pasirinkite vietą, kurioje norite įdiegti PHPMailer, ir įtraukite PHPMailer **į savo skriptą**. Darant prielaidą, kad PHPMailer failus išpakuojote į aplanką pavadinimu *„PHPMailer“*, galite naudoti šias kodo eilutes:

```php
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);
```

## Kaip siųsti el. laiškus naudojant PHPMailer: žingsnis po žingsnio

### 1 žingsnis: Įtraukite vardų erdves

Patikrinkite, ar **vardų erdvės** nurodytos teisingai, kad būtų galima naudotis „PHPMailer“. Tam reikia `Use` eilučių, todėl jūsų kodas turėtų būti toks:

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

Prie atskirų klasių galite prisijungti įrašydami jų pavadinimus po paskutinės kablelės.

### 2 žingsnis: Klaidų aptikimas

Nors „PHPMailer“ yra labai patikimas būdas siųsti el. laiškus, kartais gali pasitaikyti klaidų. Įtraukus **„try-catch“ bloką** į el. laiško siuntimo kodą, bus užkirstas kelias tam, kad jūsų pašto serveryje esantys konfidencialūs duomenys nebūtų nusiųsti vartotojams kaip klaidos pranešimas:

```php
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();
}
```

### 3 žingsnis: Autentiškumo patvirtinimas naudojant SMTP

Norėdami naudoti „PHPMailer“, turite **prisijungti per SMTP**. Įveskite savo pašto serverio adresą šalia atitinkamo protokolo ( TLS/SSL arba SMTP) ir nurodykite prievadą, vartotojo vardą bei slaptažodį. Naudojamas protokolas ir prievadas priklauso nuo jūsų **pašto paslaugų teikėjo**. Atitinkamus serverio duomenis galite rasti **pašto paslaugų teikėjo svetainėje**.

```php
$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;
```

Vietoj `ENCRYPTION_STARTTLS` kaip šifravimo metodo taip pat galite naudoti `ENCRYPTION_SMTPS`. Pasirinkus `ENCRYPTION_SMTPS`, ryšys **užmezgamas tik tuomet, jei veikia [TLS](https://www.ionos.com/lt-lt/digitalguide/serveris/saugumas/tls-transporto-sluoksnio-saugumas/)**. Tai reiškia, kad ryšys su serveriu įmanomas tik tuo atveju, jei serveris palaiko saugiam duomenų perdavimui reikalingas šifravimo priemones. Pasirinkus „StartTLS“, ryšys su pašto serveriu užmezgamas be šifravimo. Šifravimas taikomas tik vėliau. Jei TLS šifravimo taikyti neįmanoma, likęs duomenų mainas vyks nešifruotas.

SMTPS užtikrina **aukštesnį saugumo lygį**, o StartTLS**pasižymi geresniu suderinamumu**. Dėl šio suderinamumo StartTLS paprastai yra labiau pageidaujamas pasirinkimas.

### 4 žingsnis: Nurodykite el. laiško gavėją

Dabar skripte galite nurodyti savo el. laiško **gavėjus**.

```php
// 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');
```

### 5 žingsnis: Įterpkite laiško turinį

Nepamirškite laiško turinio. Paprastai jį sudaro tema ir tekstas, kuriuos galima **pateikti tiek HTML, tiek ne-HTML formatais**. Svarbu atkreipti dėmesį, kad senesnė programinė įranga gali nepalaikyti dabartinio HTML5 standarto, todėl patartina laišką kurti naudojant HTML.

Naudodami „PHPMailer“ ir funkciją **„addAttachment“**, taip pat galite lengvai siųsti **priedus**. Naudodami „PHPMailer“ taip pat galite siųsti **paveikslėlius, muzikos failus, dokumentus, vaizdo įrašus ir GIF failus**. Be to, galite pervardyti priedus, nurodydami neprivalomą antrąjį parametrą, kuris perduodamas šiai funkcijai.

```php
$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");
```

### 6 žingsnis: Naudokite tinkamą simbolių kodavimą

Rekomenduojama PHPMailer įjungti UTF-8, kad būtų išvengta rodymo klaidų apdorojant kitų kalbų **raides su diakritiniais ženklais**, ypač naudojant įvairius priedus. Tai galima padaryti įterpiant į savo PHP skriptą šias kodų eilutes:

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

### 7 žingsnis: Siųsti el. laišką

Dabar atėjo laikas išsiųsti laišką. Tam naudokite šią komandą:

```php
$mail->send();
```

Geriausia visą kodo fragmentą, pateiktą užklausos siuntimo dalyje, įdėti į skripto **„try“ bloką**, kad būtų galima aptikti visas klaidas.

## PHPMailer naudojimo pavyzdys: el. laiško siuntimas

Toliau pateikiamas visas kodas, kurio reikia, norint išsiųsti elektroninį laišką su paveikslėlio priedu pasirinktam gavėjui naudojant „PHPMailer“:

```php
<?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();
}
```


This is a markdown version of: [https://www.ionos.com/lt-lt/digitalguide/el-pastas/techniniai-klausimai/phpmailer/](https://www.ionos.com/lt-lt/digitalguide/el-pastas/techniniai-klausimai/phpmailer/) for AI/LLM consumption.