# Kā nosūtīt e-pastus, izmantojot PHPMailer

PHPMailer ir **programmatūras bibliotēka**, kas nodrošina [e-pasta nosūtīšanu](https://www.ionos.com/lv-lv/digitalguide/e-pasts/tehniskie-jautajumi/e-pasta-sutisana-ka-tas-darbojas/), izmantojot PHP. PHPMailer galvenokārt tiek izmantots tīmekļa vietņu **kontaktformām**, taču to var izmantot arī privātu e-pastu sūtīšanai.

## Kas ir PHPMailer?

PHPMailer ir **pasta paplašinājums** PHP, ko izstrādā un uztur PHP kopiena. Ar PHPMailer nosūtītās e-pasta vēstules retāk nonāk spam mapē nekā tās, kas nosūtītas ar PHP iebūvēto pasta funkciju. Tas ir tāpēc, ka ar PHPMailer rakstītās vēstules tiek nosūtītas, izmantojot SMTP. SMTP ir saīsinājums no Simple Mail Transfer Protocol (vienkāršais pasta pārraides protokols) un to izmanto e-pasta vēstuļu pārraidei internetā. Turklāt, atšķirībā no iebūvētās pasta funkcijas, PHPMailer atbalsta arī HTML vēstules un pielikumus.

## Kādam nolūkam izmanto PHPMailer?

Salīdzinājumā ar citiem e-pasta pakalpojumu sniedzējiem vai datorā instalētām e-pasta programmām PHPMailer lietošana ir nedaudz apgrūtinošāka, tāpēc varētu rasties jautājums, kāpēc cilvēki izvēlas to lietot. Šis PHP rīks atvieglo automatizētu atbilžu izveidi, piemēram, tās, kas nepieciešamas **interneta veikalam**. Turklāt PHPMailer ir piemērots arī tīmekļa vietņu **kontaktformām**.

## Kādas ir prasības attiecībā uz PHPMailer?

Lai izmantotu PHPMailer, jums ir nepieciešams SMTP serveris. Jūs pats varat izlemt, vai izmantot pakalpojumu sniedzēja [pastu serveri](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS") vai izveidot **savu serveri**. PHP paplašinājumu vislabāk instalēt, izmantojot Composer (PHP pakotņu pārvaldnieku).

Tip PHP pamatu apguve ir vēl viena svarīga prasība, lai varētu izmantot PHPMailer. Ja jums rodas grūtības ar PHP pamatiem, palīdzību var sniegt mūsu PHP apmācības materiāls iesācējiem.

## Kā soli pa solim instalēt PHPMailer

### 1. solis: Lejupielādējiet jaunāko PHPMailer versiju

Lejupielādējiet **jaunāko PHPMailer versiju**. To var izdarīt, izmantojot Composer, vai manuāli no GitHub.

#### 1. variants: Lejupielāde, izmantojot Composer

Ja esat instalējis pakotņu pārvaldnieku [Composer](https://getcomposer.org/ "Composer website"), varat vienkārši izmantot šo komandu:

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

**Svarīgi**: ja esat instalējis PHPMailer ar Composer, lai varētu sūtīt e-pastus, PHP kodā ir jāiekļauj Composer.

Var izmantot šādu koda rindu:

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

Atslēgvārds\*\*„require\_once”\*\*nodrošina, ka Composer tiek iekļauts tikai vienu reizi. Pretējā gadījumā var rasties programmas kļūdas. Instalēšana, izmantojot Composer, tagad ir pabeigta.

#### 2. variants: Lejupielādēt tieši no GitHub

PHPMailer avota failus var lejupielādēt arī **manuāli**, noklikšķinot uz pogas **„Code“** attiecīgajā [GitHub repozitorijā](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") un lejupielādējot ZIP failu. Ja jūsu sistēmā ir instalēts Git, varat arī klonēt repozitoriju, izmantojot komandrindas komandu.

### 2. solis: Izpakuojiet failus

Ja esat manuāli lejupielādējis PHPMailer avota kodu, jums ir jāatver ZIP faili. Izvēlieties vietu, kurā vēlaties instalēt PHPMailer, un iekļaujiet PHPMailer **savā skriptā**. Pieņemot, ka esat izpakojis PHPMailer failus mapē ar *nosaukumu „PHPMailer“*, varat izmantot šādas koda rindas:

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

## Kā soli pa solim sūtīt e-pastus, izmantojot PHPMailer

### 1. solis: Iekļaujiet vārdu telpas

Pārliecinieties, ka **vārdu telpas** ir pareizi definētas, lai varētu izmantot PHPMailer. Tam ir nepieciešami `Use` rīkojumi, tāpēc jūsu kodā jāiekļauj šādas rindas:

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

Lai piekļūtu atsevišķām klasēm, pēc pēdējās slīpsvītras jānorāda to nosaukumi.

### 2. solis: Kļūdu noteikšana

Lai gan PHPMailer ir ļoti uzticams veids, kā sūtīt e-pastus, laiku pa laikam var rasties kļūdas. Iekļaujot e-pasta nosūtīšanas procesā **„try-catch“ konstrukciju**, varēsiet novērst to, ka jūsu pasta serverī esošie konfidenciālie dati tiek nosūtīti lietotājiem kā kļūdas ziņojums:

```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. solis: Autentificēšanās, izmantojot SMTP

Lai izmantotu PHPMailer, jums ir **jāautentificējas, izmantojot SMTP**. Ievadiet sava pasta servera adresi blakus atbilstošajam protokolam ( TLS/SSL vai SMTP) un norādiet portu, lietotājvārdu un paroli. Izmantojamais protokols un ports ir atkarīgi no jūsu **pasta pakalpojuma sniedzēja**. Attiecīgos servera datus var atrast **pasta pakalpojuma sniedzēja tīmekļa vietnē**.

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

Vietā `ENCRYPTION_STARTTLS` kā šifrēšanas metodi var izmantot arī `ENCRYPTION_SMTPS`. Izvēloties `ENCRYPTION_SMTPS`, savienojums tiek **izveidots tikai tad, ja ir aktīvs [TLS](https://www.ionos.com/lv-lv/digitalguide/serveris/drosiba/tls-transporta-slana-drosiba/)**. Tas nozīmē, ka saziņa ar serveri ir iespējama tikai tad, ja serveris atbalsta drošai datu pārraidei nepieciešamos šifrēšanas pasākumus. Izvēloties StartTLS, savienojums ar pasta serveri tiek izveidots bez šifrēšanas. Šifrēšana tiek piemērota tikai pēc tam. Ja nav iespējams piemērot TLS šifrēšanu, atlikusī datu apmaiņa notiks nešifrētā veidā.

SMTPS nodrošina **augstāku drošības līmeni**, savukārt StartTLS**piedāvā labāku saderību**. Tieši saderības dēļ StartTLS parasti tiek izvēlēts kā priekšroka.

### 4. solis: Norādiet e-pasta saņēmēju

Tagad skriptā varat norādīt e-pasta **saņēmē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. solis: Ievadi e-pasta saturu

Neaizmirstiet par e-pasta saturu. Tas parasti sastāv no temata un teksta, ko var norādīt **gan HTML, gan ne-HTML formātā**. Ir svarīgi ņemt vērā, ka vecākas programmas varētu nespēt atbalstīt pašreizējo HTML5 standartu, tāpēc varētu būt lietderīgi izveidot e-pastu, izmantojot HTML.

Ar PHPMailer varat viegli nosūtīt arī **pielikumus**, izmantojot funkciju **addAttachment**. Ar PHPMailer var nosūtīt arī **attēlus, mūziku, dokumentus, videoklipus un GIF failus**. Pielikumus varat arī pārdēvēt, izmantojot papildu otro parametru, kas tiek nodots 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. solis: Izmantojiet pareizo rakstzīmju kodējumu

Ieteicams PHPMailer iestatīt UTF-8, lai novērstu attēlošanas kļūdas, apstrādājot citās valodās lietotos **burtus ar diakritiskajām zīmēm**, it īpaši, ja tiek izmantoti dažādi pielikumi. To var izdarīt, pievienojot savam PHP skriptam šādas koda rindas:

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

### 7. solis: Nosūtiet e-pastu

Tagad ir pienācis laiks nosūtīt e-pastu. Lai to izdarītu, izmantojiet šādu komandu:

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

Vislabāk ir ievietot visu kodu, kas norādīts pieprasījuma nosūtīšanas daļā, skripta **„try“ bloka** ietvaros, lai varētu uztvert jebkuras kļūdas.

## Koda piemērs e-pasta nosūtīšanai ar PHPMailer

Zemāk ir redzams viss nepieciešamais kods, lai, izmantojot PHPMailer, nosūtītu e-pastu ar attēla pielikumu izvēlētajam saņēmējam:

```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/lv-lv/digitalguide/e-pasts/tehniskie-jautajumi/phpmailer/](https://www.ionos.com/lv-lv/digitalguide/e-pasts/tehniskie-jautajumi/phpmailer/) for AI/LLM consumption.