Email

E-mail versturen met PHPMailer

PHPMailer is de meestgebruikte bibliotheek om e-mail te versturen vanuit PHP. Het wrapt SMTP zodat je één keer een host, poort en inloggegevens configureert en daarna berichten opbouwt en verstuurt met een duidelijke object-API. De ingebouwde mail()-functie van PHP doet te weinig (geen authenticatie, zwakke foutrapportage), en daarom grijpen de meeste projecten naar PHPMailer. Hier is een compleet, werkend voorbeeld.

Hoe installeer je PHPMailer?

Gebruik Composer:

composer require phpmailer/phpmailer

Laad daarna de autoloader en importeer de klassen die je nodig hebt:

<?php
require "vendor/autoload.php";

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

Hoe configureer je SMTP en verstuur je een bericht?

Maak een PHPMailer-instantie aan, schakel over naar SMTP-modus met isSMTP() en stel de verbindings- en berichtvelden in. Wikkel de aanroep in try/catch zodat een mislukte verzending wordt gemeld in plaats van stilzwijgend genegeerd:

<?php
$mail = new PHPMailer(true); // true enables exceptions

try {
    // Server settings
    $mail->isSMTP();
    $mail->Host       = "smtp.example.com";
    $mail->SMTPAuth   = true;
    $mail->Username   = getenv("SMTP_USER");
    $mail->Password   = getenv("SMTP_PASS");
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port       = 587;

    // Recipients
    $mail->setFrom("you@yourdomain.com", "Your App");
    $mail->addAddress("recipient@example.org", "Recipient Name");

    // Content
    $mail->isHTML(true);
    $mail->Subject = "Your receipt";
    $mail->Body    = "<p>Thanks for your order.</p>";
    $mail->AltBody = "Thanks for your order. This is the plain-text version.";

    $mail->send();
    echo "Message sent.";
} catch (Exception $e) {
    echo "Send failed: {$mail->ErrorInfo}";
}

Een paar details waar mensen over struikelen. SMTPSecure en Port horen bij elkaar: gebruik ENCRYPTION_STARTTLS met 587 of ENCRYPTION_SMTPS met 465. isHTML(true) vertelt PHPMailer dat de Body HTML is en dat AltBody als platte-tekstalternatief moet worden meegestuurd. Geef true mee aan de constructor zodat fouten een Exception gooien in plaats van stilzwijgend false terug te geven.

Hoe voeg je een bijlage toe?

Roep addAttachment aan met een bestandspad vóór send():

<?php
$mail->addAttachment("./invoices/invoice-1042.pdf", "invoice.pdf");

Het tweede argument hernoemt het bestand zoals de ontvanger het ziet. Je kunt het meerdere keren aanroepen voor meerdere bijlagen.

Verstuur het met Bird

PHPMailer communiceert via SMTP, wat betekent dat productie een mailserver nodig heeft met een schone reputatie, correcte authenticatierecords en een plek om te zien wat er na verzending is gebeurd. Een HTTP API maakt de server overbodig. Je stuurt JSON via HTTPS en krijgt een gestructureerd antwoord. Met de Bird e-mail-API is hetzelfde bericht één aanroep:

use Bird\Bird;

$bird = new Bird(getenv("BIRD_API_KEY"));

$bird->emails->send([
  "from"    => "you@yourdomain.com",
  "to"      => "delivered@bird.dev",
  "subject" => "Hello from PHP",
  "html"    => "<p>It works.</p>",
]);

Het delivered@bird.dev-sandboxadres accepteert altijd e-mail, zodat je de integratie kunt verifiëren voordat je naar echte inboxen stuurt. Geen SMTP-socket, geen poortkeuze, geen reputatie die je zelf moet opwarmen.

FAQ

Waarom niet gewoon de mail()-functie van PHP gebruiken?

mail() geeft het bericht door aan het lokale sendmail-binair zonder SMTP-authenticatie en vrijwel zonder foutrapportage. PHPMailer authenticeert tegen een externe server, ondersteunt TLS, bouwt multipart-berichten op en vertelt je waarom een verzending is mislukt.

Wat is het verschil tussen Body en AltBody?

Body is de HTML-versie en AltBody is de platte-tekstfallback. Met isHTML(true) ingesteld tonen clients die geen HTML kunnen weergeven AltBody, wat ook helpt bij afleverbaarheid.

STARTTLS of SMTPS?

ENCRYPTION_STARTTLS op poort 587 upgradet een onversleutelde verbinding naar TLS, terwijl ENCRYPTION_SMTPS op poort 465 vanaf het begin versleuteld is. Stem de instelling af op de poort die je mailserver verwacht.

PHPMailer is het juiste middel als je via SMTP vanuit PHP wilt versturen. Als je liever geen eigen server beheert, toont de handleiding voor het versturen van e-mail het volledige API-pad.

Bouw op hetzelfde netwerk.

Een test-API-key is direct beschikbaar. Productietoegang wordt ontgrendeld zodra u een betaalmethode toevoegt en een afzender verifieert.

Jouw volgende idee.
Klaar om te verbinden.