# Sådan sender du e-mails med PHPMailer

PHPMailer er et **programbibliotek**, der styrer [e-mail-overførsel](https://www.ionos.com/da-dk/digitalguide/e-mail/tekniske-spoergsmaal/saadan-sender-du-en-e-mail-hvordan-fungerer-det/) via PHP. PHPMailer bruges hovedsageligt til **kontaktformularer** på hjemmesider, men kan også bruges til at sende private e-mails.

## Hvad er PHPMailer?

PHPMailer er en **e-mail-udvidelse** til PHP, der udvikles og vedligeholdes af PHP-fællesskabet. E-mails sendt med PHPMailer ender sjældnere i spam-mappen end dem, der sendes med den indbyggede mail-funktion i PHP. Det skyldes, at e-mails skrevet med PHPMailer sendes via SMTP. SMTP står for Simple Mail Transfer Protocol og bruges til at overføre e-mails via internettet. Derudover understøtter PHPMailer også HTML-e-mails og vedhæftede filer, i modsætning til den indbyggede mail-funktion.

## Hvad bruges PHPMailer til?

PHPMailer er lidt mere besværligt at bruge sammenlignet med andre e-mail-udbydere eller integrerede e-mail-programmer på din computer, hvilket måske får dig til at undre dig over, hvorfor folk vælger at bruge det. PHP-rammeværket gør det nemmere at oprette automatiske svar, som f.eks. dem, der er nødvendige i en **webshop**. Derudover er PHPMailer også velegnet til **kontaktformularer** på hjemmesider.

## Hvad er kravene til PHPMailer?

Du skal bruge en SMTP-server for at kunne bruge PHPMailer. Det er op til dig, om du vil bruge en [mailserver](https://www.ionos.co.uk/office-solutions/email-server "Email server from IONOS") fra en udbyder eller **selv** opsætte **en server**. Det er bedst at bruge Composer (en pakkehåndtering til PHP) til at installere PHP-udvidelsen.

Tip At mestre grundlæggende PHP er en anden vigtig forudsætning for at kunne bruge PHPMailer. Vores PHP-vejledning for begyndere kan hjælpe dig, hvis du har problemer med de grundlæggende elementer i PHP.

## Sådan installeres PHPMailer trin for trin

### Trin 1: Download den aktuelle version af PHPMailer

Download den **nyeste version af PHPMailer**. Du kan gøre det via Composer eller manuelt fra GitHub.

#### Mulighed 1: Download via Composer

Hvis du har installeret pakkehåndteringen [Composer](https://getcomposer.org/ "Composer website"), kan du blot bruge denne kommando:

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

**Vigtigt**: Hvis du har installeret PHPMailer via Composer, skal du indsætte Composer i din PHP-kode for at kunne sende e-mails.

Følgende kodelinje kan bruges:

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

Nøgleordet\*\*»require\_once«\*\*sikrer, at Composer kun indlæses én gang. Ellers kan der opstå programfejl. Installationen via Composer er nu afsluttet.

#### Mulighed 2: Download direkte fra GitHub

PHPMailer-kildefilerne kan også downloades **manuelt** ved at klikke på knappen **»Code«** i det pågældende [GitHub-repository](https://github.com/PHPMailer/PHPMailer "PHPMailer from GitHub") og downloade ZIP-filen. Hvis Git er installeret på din computer, kan du i stedet klone repositoryet ved hjælp af en kommandolinjekommando.

### Trin 2: Pak filerne ud

Hvis du har downloadet PHPMailers kildekode manuelt, skal du pakke ZIP-filerne ud. Vælg den mappe, hvor du vil installere PHPMailer, og indsæt PHPMailer **i dit script**. Hvis du har pakket PHPMailer-filerne ud i en mappe ved navn *PHPMailer*, kan du bruge 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);
```

## Sådan sender du e-mails med PHPMailer trin for trin

### Trin 1: Indsæt navneområder

Sørg for, at **navneområderne** er korrekte, så du kan få adgang til PHPMailer. Der kræves `Use` sætninger til dette, så din kode skal indeholde følgende linjer:

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

Du kan få adgang til de enkelte klasser ved at angive navnene efter den sidste skråstreg.

### Trin 2: Find fejlene

Selvom PHPMailer er en meget pålidelig måde at sende e-mails på, kan der fra tid til anden opstå fejl. Ved at indsætte en **try-catch-sætning** i en e-mail-udsendelse undgår du, at følsomme data fra din mailserver sendes til brugerne som en fejlmeddelelse:

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

### Trin 3: Log ind via SMTP

Du skal **godkende dig selv via SMTP** for at kunne bruge PHPMailer. Indtast adressen på din mailserver ved siden af det relevante protokol (enten TLS/SSL eller SMTP) og angiv portnummeret sammen med dit brugernavn og din adgangskode. Hvilken protokol og hvilket portnummer du skal bruge, afhænger af din **mailudbyder**. De relevante serveroplysninger kan findes på **mailudbyderens hjemmeside**.

```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å vælge `ENCRYPTION_SMTPS` som krypteringsmetode. Med `ENCRYPTION_SMTPS` **oprettes der kun** en forbindelse, **hvis [TLS](https://www.ionos.com/da-dk/digitalguide/server/sikkerhed/tls-transport-layer-security/) er aktiveret**. Det betyder, at kommunikation med en server kun er mulig, hvis serveren understøtter de krypteringsforanstaltninger, der kræves for sikker overførsel. Med StartTLS oprettes forbindelsen til mailserveren uden kryptering. Først derefter anvendes kryptering. Hvis det ikke er muligt at anvende TLS-kryptering, vil den resterende dataudveksling foregå ukrypteret.

SMTPS tilbyder et **højere sikkerhedsniveau**, mens StartTLS**har bedre kompatibilitet**. På grund af sin kompatibilitet er StartTLS generelt det foretrukne valg.

### Trin 4: Angiv modtageren af e-mailen

Nu kan du angive **modtagerne** af din e-mail i scriptet.

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

### Trin 5: Indsæt indholdet af e-mailen

Glem ikke indholdet af din e-mail. Det består som regel af en emnelinje og en tekst, som kan angives **i både HTML- og ikke-HTML-versioner**. Det er vigtigt at bemærke, at ældre software muligvis ikke kan håndtere den aktuelle HTML5-standard, så det kan være en god idé at oprette din e-mail i HTML.

Du kan også nemt sende **vedhæftede filer** med PHPMailer ved hjælp af funktionen **addAttachment**. **Billeder, musik, dokumenter, videoer og GIF-filer** kan også sendes med PHPMailer. Du kan desuden omdøbe dine vedhæftede filer ved hjælp af en valgfri anden parameter, der overføres til funktionen.

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

### Trin 6: Brug den korrekte tegnkodning

Det er en god idé at aktivere UTF-8 i PHPMailer for at undgå visningsfejl ved behandling af **bogstaver med accenter** fra andre sprog, især når der bruges vedhæftede filer. Du kan gøre dette ved at tilføje følgende kodelinjer til dit PHP-script:

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

### Trin 7: Send e-mail

Nu er det tid til at sende din e-mail. Brug følgende kommando til at gøre dette:

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

Det er bedst at placere al den kode, der vises i send-anmodningen, i **try-blokken** i dit script, så du kan opfange eventuelle fejl.

## Kodeeksempel til afsendelse af en e-mail med PHPMailer

Nedenfor finder du al den kode, du skal bruge for at sende en e-mail med en billedvedhæftet fil til en modtager efter eget valg ved hjælp af 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/da-dk/digitalguide/e-mail/tekniske-spoergsmaal/phpmailer/](https://www.ionos.com/da-dk/digitalguide/e-mail/tekniske-spoergsmaal/phpmailer/) for AI/LLM consumption.