# Kuidas saata e-kirju PHPMaileri abil

PHPMailer on **programmiraamatukogu**, mis haldab [e-kirjade saatmist](https://www.ionos.com/et-ee/digitalguide/e-post/tehnilised-kuesimused/e-kirja-saatmine-kuidas-see-toimib/) PHP kaudu. PHPMailerit kasutatakse peamiselt veebisaitide **kontaktivormide** jaoks, kuid seda saab kasutada ka isiklike e-kirjade saatmiseks.

## Mis on PHPMailer?

PHPMailer on PHP-le mõeldud **meililaienendus**, mida arendab ja haldab PHP-kogukond. PHPMaileriga saadetud e-kirjad satuvad harvemini rämpsposti kausta kui need, mis on saadetud PHP sisseehitatud postifunktsiooniga. Seda seetõttu, et PHPMaileriga kirjutatud e-kirjad saadetakse SMTP-protokolli abil. SMTP tähendab Simple Mail Transfer Protocol (lihtne postiedastusprotokoll) ja seda kasutatakse e-kirjade edastamiseks internetis. Lisaks toetab PHPMailer ka HTML-kirju ja manuseid, erinevalt sisseehitatud postifunktsioonist.

## Milleks kasutatakse PHPMailerit?

PHPMaileri kasutamine on veidi tülikam võrreldes teiste e-posti teenusepakkujate või arvutisse integreeritud e-posti programmidega, mistõttu võid imestada, miks inimesed seda ikkagi kasutavad. See PHP-raamistik lihtsustab automaatvastuste loomist, mida on vaja näiteks **veebipoes**. Lisaks sobib PHPMailer hästi ka veebisaitide **kontaktivormide** jaoks.

## Millised on PHPMaileri nõuded?

PHPMaileri kasutamiseks on vaja SMTP-serverit. Saad ise otsustada, kas kasutad teenusepakkuja [postiserverit](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS") või seadistad **oma serveri**. PHP-laienduse installimiseks on kõige parem kasutada Composerit (PHP-pakettide haldurit).

Tip PHP põhialuste omandamine on veel üks oluline eeldus PHPMaileri kasutamiseks. Meie PHP-õpetus algajatele võib sulle abiks olla, kui sul on raskusi PHP põhialustega.

## Kuidas installida PHPMailer samm-sammult

### 1. samm: Lae alla PHPMaileri uusim versioon

Lae alla **PHPMaileri uusim versioon**. Seda saab teha Composeriga või käsitsi GitHubist.

#### 1. võimalus: Lae alla Composeriga

Kui olete paigaldanud paketihalduri [Composer](https://getcomposer.org/ "Composer website"), võite lihtsalt kasutada järgmist käsku:

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

**Tähtis**: kui oled PHPMaileri paigaldanud Composeriga, pead e-kirjade saatmiseks lisama oma PHP-koodi Composer.

Võib kasutada järgmist koodirida:

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

Märksõna\*\*„require\_once”\*\*tagab, et Composer lisatakse vaid üks kord. Vastasel juhul võivad tekkida programmivead. Composeriga paigaldamine on nüüd lõpetatud.

#### 2. võimalus: Lae alla otse GitHubist

PHPMaileri lähtekoodi faile saab alla laadida ka **käsitsi**, klõpsates vastavas [GitHubi hoidlas](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") nupule **„Code“** ja laadides alla ZIP-faili. Kui teie süsteemis on Git installitud, võite hoidla ka käsurealt käsu abil kloonida.

### 2. samm: Lae failid lahti

Kui olete PHPMaileri lähtekoodi käsitsi alla laadinud, peate ZIP-failid lahti pakkima. Valige koht, kuhu soovite PHPMaileri installida, ja lisage PHPMailer **oma skripti**. Eeldades, et olete PHPMaileri failid lahti pakkinud kausta nimega *„PHPMailer”*, võite kasutada järgmisi koodiridu:

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

## Kuidas saata e-kirju PHPMaileri abil samm-sammult

### 1. samm: Lisage nimeruumi

Veendu, et **nimeruumi** seaded on õiged, et saaksid PHPMailerile juurde pääseda. Selleks on vaja `Use` käsku, seega peaks su kood sisaldama järgmisi ridu:

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

Üksikutele klassidele pääseb ligi, lisades nende nimed viimase kaldjoone järele.

### 2. samm: vigade tuvastamine

Kuigi PHPMailer on väga usaldusväärne viis e-kirjade saatmiseks, võivad aeg-ajalt siiski tekkida vead. **Try-catch-lause** lisamine e-kirja saatmise protsessi aitab vältida seda, et teie postiserveris olevad tundlikud andmed saadetaks kasutajatele veateatena:

```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. samm: Autentimine SMTP kaudu

PHPMaileri kasutamiseks peate **end SMTP-protokolli kaudu autentima**. Sisestage oma meiliserveri aadress vastava protokolli ( TLS/SSL või SMTP) kõrvale ning märkige lisaks kasutajanimi, parool ja port. Kasutatav protokoll ja port sõltuvad teie **meiliteenuse pakkujast**. Vajalikud serveri andmed leiate **meiliteenuse pakkuja veebisaidilt**.

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

`ENCRYPTION_STARTTLS` asemel võid krüpteerimismeetodina kasutada ka `ENCRYPTION_SMTPS`. `ENCRYPTION_SMTPS` puhul **luuakse** ühendus **ainult siis, kui [TLS](https://www.ionos.com/et-ee/digitalguide/server/turvalisus/tls-transport-layer-security/) on aktiivne**. See tähendab, et suhtlus serveriga on võimalik ainult juhul, kui server toetab turvaliseks andmeedastuseks vajalikke krüpteerimismeetmeid. Valiku StartTLS korral luuakse ühendus postiserveriga ilma krüpteerimiseta. Krüpteerimine rakendatakse alles hiljem. Kui TLS-krüpteerimist ei ole võimalik rakendada, toimub ülejäänud andmevahetus krüpteerimata.

SMTPS pakub **suuremat turvalisust**, samas kui StartTLS**on ühilduvam**. Ühilduvuse tõttu on StartTLS üldjuhul eelistatud valik.

### 4. samm: Märkige e-kirja saaja

Nüüd saate skriptis määrata oma e-kirja **adressaadid.**

```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. samm: Lisa kirja sisu

Ära unusta oma e-kirja sisu. See koosneb tavaliselt teemast ja tekstist, mida saab määrata **nii HTML- kui ka mitte-HTML-versioonina**. Oluline on meeles pidada, et vanem tarkvara ei pruugi toetada praegust HTML5-standardit, seega võib olla mõistlik koostada oma e-kiri HTML-vormingus.

PHPMaileri abil saate **manuseid** hõlpsasti saata funktsiooni **addAttachment** abil. PHPMaileriga saab saata ka **pilte, muusikat, dokumente, videoid ja GIF-faile**. Lisaks saate manuseid ümber nimetada, kasutades selleks funktsioonile edastatavat valikulist teist parameetrit.

```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. samm: Kasuta õiget tähemärkide kodeeringut

Soovitatav on lubada PHPMaileris UTF-8, et vältida kuvamisvigu teiste keelte **täpitähtede** töötlemisel, eriti kui kasutatakse erinevaid manuseid. Selleks lisage oma PHP-skripti järgmised koodiridad:

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

### 7. samm: Saada e-kiri

Nüüd on aeg oma e-kiri ära saata. Kasuta selleks järgmist käsku:

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

Kõik saatepäringus näidatud kood on kõige parem paigutada skripti **try-lause plokki**, et saaksite vead kinni püüda.

## Koodinäide e-kirja saatmiseks PHPMaileri abil

Allpool on toodud kogu kood, mida vajad, et saata PHPMaileri abil valitud adressaadile e-kiri, millele on lisatud pilt:

```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/et-ee/digitalguide/e-post/tehnilised-kuesimused/phpmailer/](https://www.ionos.com/et-ee/digitalguide/e-post/tehnilised-kuesimused/phpmailer/) for AI/LLM consumption.