PHPMailer er et programbibliotek som håndterer e-postoverføring 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 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, kan du bare bruke denne kommandoen:

composer require phpmailer/phpmailer
bash

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:

require_once "vendor/autoload.php";
bash

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 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:

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

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
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
php

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:

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

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.

$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;
php

I stedet for ENCRYPTION_STARTTLS kan du også bruke ENCRYPTION_SMTPS som krypteringsmetode. Med ENCRYPTION_SMTPS opprettes det kun en forbindelse hvis TLS 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 StartTLShar 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.

// 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');
php

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.

$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");
php

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:

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

Trinn 7: Send e-post

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

$mail->send();
php

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
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();
}
php
Go to Main Menu