# Slik sender du e-post med PHPMailer

PHPMailer er et **programbibliotek** som håndterer [e-postoverføring](https://www.ionos.com/nb-no/digitalguide/e-post/tekniske-forhold/hvordan-sender-man-en-e-post/) via PHP. PHPMailer brukes hovedsakelig til **kontaktskjemaer** på nettsteder, men kan også brukes til å sende private e-poster.

## Hva er PHPMailer?

PHPMailer er en **e-postutvidelse** for PHP, som utvikles og vedlikeholdes av PHP-fellesskapet. E-poster sendt med PHPMailer havner sjeldnere i spam-mappen enn de som sendes med den innebygde e-postfunksjonen i PHP. Dette skyldes at e-poster skrevet med PHPMailer sendes via SMTP. SMTP står for Simple Mail Transfer Protocol og brukes til å overføre e-poster over internett. I tillegg støtter PHPMailer også HTML-e-poster og vedlegg, i motsetning til den innebygde e-postfunksjonen.

## Hva brukes PHPMailer til?

PHPMailer er litt mer omstendelig å bruke sammenlignet med andre e-posttjenester eller integrerte e-postprogrammer på datamaskinen din, noe som kanskje får deg til å lure på hvorfor folk velger å bruke det. PHP-rammeverket gjør det enklere å lage automatiske svar, slik som de som trengs i en **nettbutikk**. I tillegg egner PHPMailer seg også godt til **kontaktskjemaer** på nettsteder.

## Hva er kravene til PHPMailer?

Du trenger en SMTP-server for å kunne bruke PHPMailer. Det er opp til deg om du vil bruke en [e-postserver](https://www.ionos.com/office-solutions/email-server "Email server from IONOS") fra en leverandør eller sette opp din **egen server**. Det er best å bruke Composer (en pakkehåndterer for PHP) til å installere PHP-utvidelsen.

Tip Å mestre grunnleggende PHP-kunnskaper er et annet viktig krav for å kunne bruke PHPMailer. Vår PHP-veiledning for nybegynnere kan være til hjelp hvis du sliter med grunnleggende PHP-kunnskaper.

## Slik installerer du PHPMailer trinn for trinn

### Trinn 1: Last ned den nyeste versjonen av PHPMailer

Last ned den **nyeste versjonen av PHPMailer**. Du kan gjøre dette med Composer eller manuelt fra GitHub.

#### Alternativ 1: Last ned ved hjelp av Composer

Hvis du har installert pakkehåndtereren [Composer](https://getcomposer.org/ "Composer website"), kan du bare bruke denne kommandoen:

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

**Viktig**: Hvis du har installert PHPMailer med Composer, må du inkludere Composer i PHP-koden din for å kunne sende e-post.

Følgende kodelinje kan brukes:

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

Nøkkelordet\*\*«require\_once»\*\*sikrer at Composer bare inkluderes én gang. Ellers kan det oppstå programfeil. Installasjonen ved hjelp av Composer er nå fullført.

#### Alternativ 2: Last ned direkte fra GitHub

Kildefilene til PHPMailer kan også lastes ned **manuelt** ved å klikke på **«Code»-knappen** i det aktuelle [GitHub-depotet](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") og laste ned ZIP-filen. Hvis Git er installert på systemet ditt, kan du alternativt klone depotet ved hjelp av en kommandolinjekommando.

### Trinn 2: Pakk ut filene

Hvis du har lastet ned kildekoden til PHPMailer manuelt, må du pakke ut ZIP-filene. Velg hvor du vil installere PHPMailer, og inkluder PHPMailer **i skriptet ditt**. Forutsatt at du har pakket ut PHPMailer-filene i en mappe som heter *PHPMailer*, kan du bruke følgende kodelinjer:

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

## Slik sender du e-post med PHPMailer trinn for trinn

### Trinn 1: Legg til navnerom

Sørg for at **navnerommene** er riktige for å få tilgang til PHPMailer. Det kreves `Use` setninger for dette, så koden din bør inneholde følgende linjer:

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

Du får tilgang til de enkelte klassene ved å skrive inn navnene etter den siste skråstreken.

### Trinn 2: Oppdag feil

Selv om PHPMailer er en svært pålitelig måte å sende e-post på, kan det av og til oppstå feil. Ved å inkludere en **try-catch-setning** i e-postutsendelsen kan du forhindre at sensitive data på e-postserveren din blir sendt til brukerne som en feilmelding:

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

### Trinn 3: Autentiser deg via SMTP

Du må **autentisere deg via SMTP** for å kunne bruke PHPMailer. Skriv inn adressen til e-postserveren din ved siden av det aktuelle protokollen (enten TLS/SSL eller SMTP), og oppgi portnummeret sammen med brukernavnet og passordet ditt. Hvilken protokoll og port du bruker, avhenger av **e-postleverandøren** din. De aktuelle serveropplysningene finner du på **e-postleverandørens nettside**.

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

I stedet for `ENCRYPTION_STARTTLS` kan du også bruke `ENCRYPTION_SMTPS` som krypteringsmetode. Med `ENCRYPTION_SMTPS` **opprettes det kun** en forbindelse **hvis [TLS](https://www.ionos.com/nb-no/digitalguide/server/sikkerhet/tls-transport-layer-security/) er aktivert**. Dette betyr at kommunikasjon med en server kun er mulig hvis serveren støtter de krypteringstiltakene som kreves for sikker overføring. Med StartTLS opprettes forbindelsen til e-postserveren uten kryptering. Først etterpå blir kryptering brukt. Hvis det ikke er mulig å bruke TLS-kryptering, vil den gjenværende datautvekslingen skje ukryptert.

SMTPS gir et **høyere sikkerhetsnivå**, mens StartTLS**har bedre kompatibilitet**. På grunn av denne kompatibiliteten er StartTLS vanligvis det foretrukne valget.

### Trinn 4: Oppgi mottaker av e-posten

Nå kan du angi **mottakerne** av e-posten din i skriptet.

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

### Trinn 5: Legg til innholdet i e-posten

Ikke glem innholdet i e-posten din. Dette består vanligvis av et emnefelt og en tekst, som kan angis **både i HTML- og ikke-HTML-versjon**. Det er viktig å merke seg at eldre programvare kanskje ikke støtter den gjeldende HTML5-standarden, så det kan være lurt å utforme e-posten din i HTML.

Du kan også enkelt sende **vedlegg** med PHPMailer ved hjelp av funksjonen **addAttachment**. **Bilder, musikk, dokumenter, videoer og GIF-filer** kan også sendes med PHPMailer. Du kan også gi vedleggene nye navn ved hjelp av en valgfri andre parameter som overføres til funksjonen.

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

### Trinn 6: Bruk riktig tegnsett

Det er lurt å aktivere UTF-8 i PHPMailer for å unngå visningsfeil ved behandling av **bokstaver med aksenter** fra andre språk, spesielt når du bruker vedlegg. Du kan gjøre dette ved å legge til følgende kodelinjer i PHP-skriptet ditt:

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

### Trinn 7: Send e-post

Nå er det på tide å sende e-posten din. Bruk følgende kommando for å gjøre dette:

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

Det er best å plassere all koden som vises i send-forespørselen i **try-setningsblokken** i skriptet ditt, slik at du kan fange opp eventuelle feil.

## Kodeeksempel for å sende en e-post med PHPMailer

Nedenfor finner du all koden du trenger for å sende en e-post med et bildevedlegg til en mottaker etter eget valg ved hjelp av 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/nb-no/digitalguide/e-post/tekniske-forhold/phpmailer/](https://www.ionos.com/nb-no/digitalguide/e-post/tekniske-forhold/phpmailer/) for AI/LLM consumption.