PHPMailer is een pro­gram­ma­tuur­bi­bli­o­theek die de over­dracht van e-mails via PHP regelt. PHPMailer wordt voor­na­me­lijk gebruikt voor con­tact­for­mu­lie­ren op websites, maar kan ook worden gebruikt om privé-e-mails te versturen.

Wat is PHPMailer?

PHPMailer is een e-mail extensie voor PHP, die is ont­wik­keld en wordt on­der­hou­den door de PHP-ge­meen­schap. E-mails die met PHPMailer worden verzonden, komen minder snel in de spam­fol­der terecht dan e-mails die met de in­ge­bouw­de mail­func­tie van PHP worden verzonden. Dit komt omdat e-mails die met PHPMailer worden ge­schre­ven, worden verzonden via SMTP. SMTP staat voor Simple Mail Transfer Protocol en wordt gebruikt om e-mails via internet te verzenden. Bovendien on­der­steunt PHPMailer, in te­gen­stel­ling tot de in­ge­bouw­de mail­func­tie, ook HTML-mails en bijlagen.

Waarvoor wordt PHPMailer gebruikt?

PHPMailer is iets om­slach­ti­ger in het gebruik dan andere e-mail­pro­vi­ders of ge­ïn­te­greer­de e-mail­pro­gram­ma’s op uw computer, waardoor u zich misschien afvraagt waarom mensen ervoor kiezen om het te gebruiken. Het PHP-framework ver­een­vou­digt het maken van ge­au­to­ma­ti­seer­de reacties, zoals die nodig zijn voor een webwinkel. Daarnaast is PHPMailer ook geschikt voor con­tact­for­mu­lie­ren op websites.

Wat zijn de vereisten voor PHPMailer?

Je hebt een SMTP-server nodig om PHPMailer te kunnen gebruiken. Je kunt kiezen of je een mail­ser­ver van een provider gebruikt of je eigen server in­stal­leert. Je kunt het beste Composer (een pak­ket­be­heer­der voor PHP) gebruiken om de PHP-extensie te in­stal­le­ren.

Tip

Het beheersen van de ba­sis­prin­ci­pes van PHP is een andere be­lang­rij­ke vereiste voor het gebruik van PHPMailer. Onze PHP-tutorial voor beginners kan u helpen als u moeite heeft met de ba­sis­prin­ci­pes van PHP.

Hoe PHPMailer stap voor stap te in­stal­le­ren

Stap 1: Download de huidige versie van PHPMailer

Download de nieuwste versie van PHPMailer. U kunt dit doen met Composer of handmatig via GitHub.

Optie 1: Down­lo­a­den met Composer

Als u het pak­ket­be­heer­pro­gram­ma Composer hebt ge­ïn­stal­leerd, kunt u een­vou­dig­weg deze opdracht gebruiken:

composer require phpmailer/phpmailer
bash

Be­lang­rijk: als u PHPMailer met Composer hebt ge­ïn­stal­leerd, moet u Composer in uw PHP-code opnemen om e-mails te kunnen verzenden.

De volgende coderegel kan worden gebruikt:

require_once "vendor/autoload.php";
bash

Het trefwoord**‘require_once’**zorgt ervoor dat Composer slechts één keer wordt opgenomen. Anders kunnen er pro­gram­ma­fou­ten optreden. De in­stal­la­tie met Composer is nu voltooid.

Optie 2: Direct down­lo­a­den van GitHub

De PHPMailer-bron­be­stan­den kunnen ook handmatig worden ge­down­load door op de knop Code in de bij­be­ho­ren­de GitHub-re­po­si­to­ry te klikken en het ZIP-bestand te down­lo­a­den. Als Git op uw systeem is ge­ïn­stal­leerd, kunt u de re­po­si­to­ry ook klonen met behulp van een op­dracht­re­ge­lop­dracht.

Stap 2: Bestanden uitpakken

Als u de broncode van PHPMailer handmatig hebt ge­down­load, moet u de ZIP-bestanden openen. Selecteer de locatie waar u PHPMailer wilt in­stal­le­ren en neem PHPMailer op in uw script. Ervan uitgaande dat u de PHPMailer-bestanden hebt uitgepakt in een map met de naam PHPMailer, kunt u de volgende regels code gebruiken:

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

Hoe u stap voor stap e-mails verstuurt met PHPMailer

Stap 1: Voeg naam­ruim­ten toe

Zorg ervoor dat de naam­ruim­ten correct zijn om toegang te krijgen tot PHPMailer. Hiervoor zijn Use in­struc­ties nodig, dus uw code moet de volgende regels bevatten:

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

Je kunt de af­zon­der­lij­ke lessen openen door de namen achter de laatste schuine streep toe te voegen.

Stap 2: Fouten opsporen

Hoewel PHPMailer een zeer be­trouw­ba­re manier is om e-mails te versturen, kunnen er af en toe fouten optreden. Door een try catch-statement op te nemen in een e-mail­ver­zen­ding voorkom je dat gevoelige gegevens op je mail­ser­ver als fout­mel­ding naar ge­brui­kers worden verzonden:

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

Stap 3: Au­then­ti­ca­tie met SMTP

U moet zich au­then­ti­ce­ren met SMTP om PHPMailer te kunnen gebruiken. Voer het adres van uw mail­ser­ver in naast het juiste protocol ( TLS/SSL of SMTP) en voeg de poort toe met uw ge­brui­kers­naam en wacht­woord. Het protocol en de poort die u gebruikt, zijn af­han­ke­lijk van uw e-mail­pro­vi­der. De be­tref­fen­de ser­ver­ge­ge­vens kunt u vinden op de website van de e-mail­pro­vi­der.

$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

In plaats van ENCRYPTION_STARTTLS kunt u ook ENCRYPTION_SMTPS als ver­sleu­te­lings­me­tho­de gebruiken. Bij ENCRYPTION_SMTPS wordt alleen een ver­bin­ding tot stand gebracht als TLS TLS actief is. Dit betekent dat com­mu­ni­ca­tie met een server alleen mogelijk is als de server de ver­sleu­te­lings­maat­re­ge­len on­der­steunt die nodig zijn voor een veilige over­dracht. Bij StartTLS wordt de ver­bin­ding met de mail­ser­ver zonder ver­sleu­te­ling tot stand gebracht. Pas daarna wordt ver­sleu­te­ling toegepast. Als het niet mogelijk is om TLS-ver­sleu­te­ling toe te passen, vindt de res­te­ren­de ge­ge­vens­uit­wis­se­ling on­ver­sleu­teld plaats.

SMTPS biedt een hoger be­vei­li­gings­ni­veau, terwijl StartTLSeen betere com­pa­ti­bi­li­teit heeft. Vanwege zijn com­pa­ti­bi­li­teit heeft StartTLS over het algemeen de voorkeur.

Stap 4: Vermeld de ontvanger van de e-mail

Nu kunt u de ont­van­gers van uw e-mail in het script aanwijzen.

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

Stap 5: Voeg de inhoud van de e-mail toe

Vergeet de inhoud van uw e-mail niet. Deze bestaat meestal uit een onderwerp en een tekst, die zowel in HTML- als niet-HTML-versie kan worden opgegeven. Het is be­lang­rijk om te weten dat oudere software mogelijk niet geschikt is voor de huidige HTML5-standaard, dus het kan een goed idee zijn om uw e-mail in HTML op te stellen.

U kunt ook eenvoudig bijlagen verzenden met PHPMailer met behulp van de functie ad­dAt­tach­ment. Af­beel­din­gen, muziek, do­cu­men­ten, video’s en GIF’s kunnen ook worden verzonden met PHPMailer. U kunt uw bijlagen ook hernoemen met een optionele tweede parameter die naar de functie wordt over­ge­dra­gen.

$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

Stap 6: Gebruik de juiste te­ken­co­de­ring

Het is een goed idee om UTF-8 in PHPMailer in te schakelen om weer­ga­ve­fou­ten te voorkomen bij het verwerken van letters met accenten uit andere talen, vooral wanneer u ver­schil­len­de bijlagen gebruikt. U kunt dit doen door de volgende regels code aan uw PHP-script toe te voegen:

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

Stap 7: E-mail verzenden

Nu is het tijd om je e-mail te versturen. Gebruik hiervoor het volgende commando:

$mail->send();
php

Het is het beste om alle code die in het ver­zend­ver­zoek wordt weer­ge­ge­ven, in het try-sta­te­ment­blok van uw script te plaatsen, zodat u eventuele fouten kunt opvangen.

Co­de­voor­beeld voor het verzenden van een e-mail met PHPMailer

Hieronder vindt u alle code die u nodig hebt om met PHPMailer een e-mail met een af­beel­ding als bijlage naar een ontvanger naar keuze te sturen:

<?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
Ga naar hoofdmenu