# Kuinka lähettää sähköposteja PHPMailerilla

PHPMailer on **ohjelmakirjasto**, joka hoitaa [sähköpostin lähettämisen](https://www.ionos.com/fi-fi/digitalguide/saehkoeposti/tekniset-asiat/saehkoepostin-laehettaeminen-miten-se-toimii/) PHP:n kautta. PHPMaileria käytetään pääasiassa verkkosivustojen **yhteydenottolomakkeissa**, mutta sitä voidaan käyttää myös yksityisten sähköpostiviestien lähettämiseen.

## Mikä on PHPMailer?

PHPMailer on PHP:lle tarkoitettu **sähköpostilaajennus**, jota kehittää ja ylläpitää PHP-yhteisö. PHPMailerilla lähetetyt sähköpostit päätyvät harvemmin roskapostikansioon kuin PHP:n sisäänrakennetulla postitoiminnolla lähetetyt. Tämä johtuu siitä, että PHPMailerilla kirjoitetut sähköpostit lähetetään SMTP:n kautta. SMTP tarkoittaa Simple Mail Transfer Protocolia, ja sitä käytetään sähköpostien siirtämiseen internetissä. Lisäksi PHPMailer tukee myös HTML-sähköposteja ja liitteitä, toisin kuin sisäänrakennettu postitoiminto.

## Mihin PHPMaileria käytetään?

PHPMailerin käyttö on hieman työläämpää verrattuna muihin sähköpostipalveluihin tai tietokoneeseen asennettuihin sähköpostiohjelmiin, minkä vuoksi saatat ihmetellä, miksi ihmiset valitsevat juuri sen. PHP-kehys helpottaa automaattisten vastausten luomista, kuten **verkkokaupassa** tarvittavia vastauksia. Lisäksi PHPMailer sopii hyvin verkkosivustojen **yhteydenottolomakkeisiin**.

## Mitkä ovat PHPMailerin vaatimukset?

PHPMailerin käyttämiseen tarvitaan SMTP-palvelin. Voit valita, käytätkö palveluntarjoajan [sähköpostipalvelinta](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS") vai asennatko **oman palvelimen**. PHP-laajennuksen asentamiseen on suositeltavaa käyttää Composer-työkalua (PHP:n pakettienhallintaohjelmaa).

Vinkki PHP:n perusteiden hallitseminen on toinen tärkeä edellytys PHPMailerin käytölle. Aloittelijoille suunnattu PHP-oppaamme auttaa sinua, jos sinulla on vaikeuksia PHP:n perusteiden kanssa.

## PHPMailerin asennus vaihe vaiheelta

### Vaihe 1: Lataa PHPMailerin uusin versio

Lataa **PHPMailerin uusin versio**. Voit tehdä tämän Composerin avulla tai manuaalisesti GitHubista.

#### Vaihtoehto 1: Lataa Composerin avulla

Jos olet asentanut [Composer-paketinhallintaohjelman](https://getcomposer.org/ "Composer website"), voit käyttää seuraavaa komentoa:

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

**Tärkeää**: jos olet asentanut PHPMailerin Composerin avulla, sinun on sisällytettävä Composer PHP-koodiisi, jotta voit lähettää sähköposteja.

Seuraavaa koodiriviä voidaan käyttää:

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

Avainsana\*\*”require\_once”\*\*varmistaa, että Composer ladataan vain kerran. Muussa tapauksessa saatat kohdata ohjelmointivirheitä. Asennus Composerin avulla on nyt valmis.

#### Vaihtoehto 2: Lataa suoraan GitHubista

PHPMailerin lähdekooditiedostot voi ladata myös **manuaalisesti** napsauttamalla vastaavan [GitHub-arkiston](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") **Code-painiketta** ja lataamalla ZIP-tiedoston. Jos järjestelmääsi on asennettu Git, voit vaihtoehtoisesti kloonata arkiston komentorivikomennolla.

### Vaihe 2: Pura tiedostot

Jos olet ladannut PHPMailerin lähdekoodin manuaalisesti, sinun on avattava ZIP-tiedostot. Valitse sijainti, johon haluat asentaa PHPMailerin, ja lisää PHPMailer **skriptiisi**. Olettaen, että olet purkanut PHPMailer-tiedostot kansioon nimeltä *PHPMailer*, voit käyttää seuraavia koodirivejä:

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

## Kuinka lähettää sähköposteja PHPMailerilla vaihe vaiheelta

### Vaihe 1: Lisää nimitilat

Varmista, että **nimitilat** ovat oikein, jotta PHPMailer-kirjastoa voidaan käyttää. Tätä varten tarvitaan `Use` komentoa, joten koodissasi tulisi olla seuraavat rivit:

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

Voit avata yksittäiset luokat lisäämällä niiden nimet viimeisen kauttaviivan jälkeen.

### Vaihe 2: Virheiden havaitseminen

Vaikka PHPMailer on erittäin luotettava tapa lähettää sähköposteja, virheitä voi silti esiintyä ajoittain. Lisäämällä **try-catch-lause** sähköpostin lähetysprosessiin voit estää sen, että postipalvelimesi arkaluontoiset tiedot lähetetään käyttäjille virheilmoituksena:

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

### Vaihe 3: Kirjaudu sisään SMTP:n kautta

Jotta **voit** käyttää PHPMaileria, **sinun** on **tunnistaututtava SMTP:n kautta**. Kirjoita sähköpostipalvelimesi osoite kyseisen protokollan (joko TLS/SSL tai SMTP) viereen ja lisää porttinumero sekä käyttäjätunnuksesi ja salasanasi. Käyttämäsi protokolla ja portti riippuvat **sähköpostipalveluntarjoajastasi**. Tarvittavat palvelintiedot löydät **sähköpostipalveluntarjoajan verkkosivuilta**.

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

Salausmenetelmänä voi käyttää `ENCRYPTION_STARTTLS` sijaan myös `ENCRYPTION_SMTPS`. Asetuksella `ENCRYPTION_SMTPS` yhteys **muodostetaan vain, jos [TLS](https://www.ionos.com/fi-fi/digitalguide/palvelin/turvallisuus/tls-transport-layer-security/) on käytössä**. Tämä tarkoittaa, että yhteydenpito palvelimen kanssa on mahdollista vain, jos palvelin tukee turvallisen tiedonsiirron edellyttämiä salausmenetelmiä. Asetuksella StartTLS yhteys postipalvelimeen muodostetaan ilman salausta. Salaus otetaan käyttöön vasta myöhemmin. Jos TLS-salausta ei voida käyttää, jäljellä oleva tiedonsiirto tapahtuu salaamattomana.

SMTPS tarjoaa **paremman tietoturvan**, kun taas StartTLS**on yhteensopivampi**. Yhteensopivuutensa vuoksi StartTLS on yleensä suositeltavin vaihtoehto.

### Vaihe 4: Ilmoita sähköpostin vastaanottaja

Nyt voit määrittää sähköpostiviestisi **vastaanottajat** skriptissä.

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

### Vaihe 5: Lisää sähköpostin sisältö

Älä unohda sähköpostiviestisi sisältöä. Se koostuu yleensä otsikosta ja tekstistä, jotka voidaan määrittää **sekä HTML- että ei-HTML-versioina**. On tärkeää huomata, että vanhemmat ohjelmistot eivät välttämättä tue nykyistä HTML5-standardia, joten voi olla hyvä idea laatia sähköpostiviestisi HTML-muodossa.

Voit myös lähettää **liitetiedostoja** helposti PHPMailerin avulla **addAttachment-funktiota** käyttämällä. PHPMailerilla voi lähettää myös **kuvia, musiikkia, asiakirjoja, videoita ja GIF-tiedostoja**. Voit myös nimetä liitetiedostosi uudelleen valinnaisella toisella parametrilla, joka välitetään funktiolle.

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

### Vaihe 6: Käytä oikeaa merkistöä

On suositeltavaa ottaa UTF-8 käyttöön PHPMailerissa, jotta vältetään näyttövirheet käsiteltäessä muiden kielten **aksenttimerkkejä sisältäviä kirjaimia**, etenkin kun käytetään liitetiedostoja. Voit tehdä tämän lisäämällä seuraavat koodirivit PHP-skriptiisi:

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

### Vaihe 7: Lähetä sähköposti

Nyt on aika lähettää sähköpostiviestisi. Tee se seuraavalla komennolla:

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

On suositeltavaa sijoittaa kaikki lähetyspyynnössä näkyvä koodi skriptisi **try-lauseen lohkoon**, jotta voit havaita mahdolliset virheet.

## Koodiesimerkki sähköpostin lähettämisestä PHPMailerilla

Alla on kaikki tarvittava koodi, jolla voit lähettää sähköpostiviestin, jossa on kuvaliite, valitsemallesi vastaanottajalle PHPMailerin avulla:

```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/fi-fi/digitalguide/saehkoeposti/tekniset-asiat/phpmailer/](https://www.ionos.com/fi-fi/digitalguide/saehkoeposti/tekniset-asiat/phpmailer/) for AI/LLM consumption.