# Kako pošiljati e-pošto s PHPMailerjem

PHPMailer je **programska knjižnica**, ki omogoča [pošiljanje e-pošte](https://www.ionos.com/sl-si/digitalguide/e-posta/tehnicne-zadeve/posiljanje-e-poste-kako-to-deluje/) prek jezika PHP. PHPMailer se večinoma uporablja za **kontaktne obrazce** na spletnih straneh, vendar ga je mogoče uporabiti tudi za pošiljanje zasebnih e-poštnih sporočil.

## Kaj je PHPMailer?

PHPMailer je **poštna razširitev** za PHP, ki jo razvija in vzdržuje skupnost PHP. E-poštna sporočila, poslana s PHPMailerjem, se redkeje znajdejo v mapi za neželeno pošto kot tista, poslana z vgrajeno poštno funkcijo PHP. To je zato, ker se e-poštna sporočila, napisana s PHPMailerjem, pošiljajo prek SMTP. SMTP pomeni Simple Mail Transfer Protocol (preprost protokol za prenos pošte) in se uporablja za prenos e-poštnih sporočil prek interneta. Poleg tega PHPMailer podpira tudi HTML-pošto in priloge, za razliko od vgrajene poštne funkcije.

## Za kaj se uporablja PHPMailer?

PHPMailer je v primerjavi z drugimi ponudniki e-poštnih storitev ali vgrajenimi poštnimi programi na vašem računalniku nekoliko bolj zapleten za uporabo, zato se morda sprašujete, zakaj se ljudje odločajo zanj. Ta PHP-okvir poenostavlja ustvarjanje avtomatskih odgovorov, kot so tisti, ki so potrebni za **spletno trgovino**. Poleg tega je PHPMailer primeren tudi za **kontaktne obrazce** na spletnih straneh.

## Kakšne so zahteve za PHPMailer?

Za uporabo PHPMailerja potrebujete SMTP-strežnik. Sami se odločite, ali boste uporabili [poštni strežnik](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS") ponudnika ali pa si nastavili **lastnega**. Razširitev PHP je najbolje namestiti s pomočjo Composerja (upravitelja paketov za PHP).

Tip Osvojitev osnov PHP je še en pomemben pogoj za uporabo PHPMailerja. Naš PHP-vodnik za začetnike vam lahko pomaga, če imate težave z osnovami PHP.

## Kako korak za korakom namestiti PHPMailer

### Korak 1: Prenesite najnovejšo različico PHPMailerja

Prenesite **najnovejšo različico PHPMailerja**. To lahko storite s Composerjem ali ročno s spletne strani GitHub.

#### Možnost 1: Prenos s pomočjo Composerja

Če imate nameščen upravitelj paketov [Composer](https://getcomposer.org/ "Composer website"), lahko preprosto uporabite ta ukaz:

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

**Pomembno**: če ste PHPMailer namestili s Composerjem, morate v svojo kodo PHP vključiti Composer, da boste lahko pošiljali e-pošto.

Uporabite lahko naslednjo vrstico kode:

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

Ključna beseda\*\*»require\_once«\*\*zagotavlja, da se Composer vključi le enkrat. V nasprotnem primeru lahko pride do napak v programu. Namestitev s pomočjo Composerja je zdaj zaključena.

#### Možnost 2: Prenos neposredno iz GitHuba

Izvorne datoteke PHPMailerja lahko prenesete tudi **ročno**, tako da v ustreznem [repozitoriju GitHub](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") kliknete gumb **»Code«** in prenesete datoteko ZIP. Če imate v sistemu nameščen Git, lahko repozitorij namesto tega klonirate z ukazom v ukazni vrstici.

### Korak 2: Razpakirajte datoteke

Če ste izvorno kodo PHPMailerja prenesli ročno, morate odpreti datoteke ZIP. Izberite mesto, kamor želite namestiti PHPMailer, in ga vključite **v svoj skript**. Če ste datoteke PHPMailerja razpakirali v mapo z imenom *PHPMailer*, lahko uporabite naslednje vrstice kode:

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

## Kako pošiljati e-pošto s PHPMailerjem – korak za korakom

### Korak 1: Vključite imenske prostore

Preverite, ali so **imenski prostori** pravilno nastavljeni, da boste lahko dostopali do PHPMailerja. Za to je potrebnih `Use` stavkov, zato mora vaša koda vsebovati naslednje vrstice:

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

Do posameznih razredov lahko dostopate tako, da za zadnjo poševnico vnesete njihova imena.

### Korak 2: Odkrivanje napak

Čeprav je PHPMailer zelo zanesljiv način za pošiljanje e-pošte, se občasno lahko pojavijo napake. Vključitev **stavka »try catch«** v postopek pošiljanja e-pošte bo preprečila, da bi se občutljivi podatki z vašega poštnega strežnika poslali uporabnikom v obliki napaknega sporočila:

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

### Korak 3: Prijava prek SMTP

Za uporabo PHPMailerja **se** morate **prijaviti prek protokola SMTP**. Vnesite naslov svojega poštnega strežnika ob ustreznem protokolu ( TLS/SSL ali SMTP) ter navedite vrata skupaj z uporabniškim imenom in geslom. Protokol in vrata, ki jih uporabljate, sta odvisna od vašega **ponudnika poštnih storitev**. Ustrezne podatke o strežniku najdete na **spletni strani ponudnika poštnih storitev**.

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

Namesto `ENCRYPTION_STARTTLS` lahko kot metodo šifriranja uporabite tudi `ENCRYPTION_SMTPS`. Pri `ENCRYPTION_SMTPS` se povezava **vzpostavi le, če je [TLS](https://www.ionos.com/sl-si/digitalguide/streznik/varnost/tls-varnost-na-transportnem-sloju/) aktiven**. To pomeni, da je komunikacija s strežnikom mogoča le, če strežnik podpira ukrepe šifriranja, potrebne za varen prenos. Pri StartTLS se povezava s poštnim strežnikom vzpostavi brez šifriranja. Šele nato se uporabi šifriranje. Če ni mogoče uporabiti šifriranja TLS, bo preostala izmenjava podatkov potekala nešifrirano.

SMTPS zagotavlja **višjo raven varnosti**, medtem ko**je** StartTLS**bolj združljiv**. Zaradi te združljivosti je StartTLS na splošno bolj priljubljena izbira.

### Korak 4: Navedite prejemnika e-poštnega sporočila

Zdaj lahko v skriptu določite **prejemnike** svojega e-poštnega sporočila.

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

### Korak 5: Vnesite vsebino e-poštnega sporočila

Ne pozabite na vsebino e-poštnega sporočila. Ta običajno obsega naslov in besedilo, ki **ju** lahko pripravite **v obliki HTML in v obliki brez HTML**. Pomembno je vedeti, da starejša programska oprema morda ne podpira trenutnega standarda HTML5, zato je priporočljivo, da e-poštno sporočilo oblikujete v formatu HTML.

S pomočjo funkcije **addAttachment** lahko v PHPMailerju enostavno pošiljate tudi **priloge**. S PHPMailerjem lahko pošiljate **slike, glasbo, dokumente, videoposnetke in GIF-datoteke**. Priloge lahko preimenujete tudi z dodatnim drugim parametrom, ki ga prenesete v funkcijo.

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

### Korak 6: Uporabite pravilno kodiranje znakov

Priporočljivo je v PHPMailerju omogočiti podporo za UTF-8, da se preprečijo napake pri prikazovanju pri obdelavi **črk z naglasnimi znaki** iz drugih jezikov, še posebej pri uporabi različnih prilog. To lahko storite tako, da v svoj PHP-skript dodate naslednje vrstice kode:

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

### 7. korak: Pošlji e-pošto

Zdaj je čas, da pošljete e-pošto. Za to uporabite naslednji ukaz:

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

Najbolje je, da vso kodo, prikazano v zahtevku za pošiljanje, vstavite v **blok izjave try** v svojem skriptu, da boste lahko zaznali morebitne napake.

## Primer kode za pošiljanje e-pošte s PHPMailerjem

Spodaj je navedena vsa koda, ki jo potrebujete za pošiljanje e-poštnega sporočila s priloženo sliko izbranemu prejemniku s pomočjo PHPMailerja:

```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/sl-si/digitalguide/e-posta/tehnicne-zadeve/phpmailer/](https://www.ionos.com/sl-si/digitalguide/e-posta/tehnicne-zadeve/phpmailer/) for AI/LLM consumption.