Hoe e-mails verzenden met PHPMailer
PHPMailer is een programmatuurbibliotheek die de overdracht van e-mails via PHP regelt. PHPMailer wordt voornamelijk gebruikt voor contactformulieren 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 ontwikkeld en wordt onderhouden door de PHP-gemeenschap. E-mails die met PHPMailer worden verzonden, komen minder snel in de spamfolder terecht dan e-mails die met de ingebouwde mailfunctie van PHP worden verzonden. Dit komt omdat e-mails die met PHPMailer worden geschreven, worden verzonden via SMTP. SMTP staat voor Simple Mail Transfer Protocol en wordt gebruikt om e-mails via internet te verzenden. Bovendien ondersteunt PHPMailer, in tegenstelling tot de ingebouwde mailfunctie, ook HTML-mails en bijlagen.
Waarvoor wordt PHPMailer gebruikt?
PHPMailer is iets omslachtiger in het gebruik dan andere e-mailproviders of geïntegreerde e-mailprogramma’s op uw computer, waardoor u zich misschien afvraagt waarom mensen ervoor kiezen om het te gebruiken. Het PHP-framework vereenvoudigt het maken van geautomatiseerde reacties, zoals die nodig zijn voor een webwinkel. Daarnaast is PHPMailer ook geschikt voor contactformulieren 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 mailserver van een provider gebruikt of je eigen server installeert. Je kunt het beste Composer (een pakketbeheerder voor PHP) gebruiken om de PHP-extensie te installeren.
Het beheersen van de basisprincipes van PHP is een andere belangrijke vereiste voor het gebruik van PHPMailer. Onze PHP-tutorial voor beginners kan u helpen als u moeite heeft met de basisprincipes van PHP.
Hoe PHPMailer stap voor stap te installeren
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: Downloaden met Composer
Als u het pakketbeheerprogramma Composer hebt geïnstalleerd, kunt u eenvoudigweg deze opdracht gebruiken:
composer require phpmailer/phpmailerbashBelangrijk: als u PHPMailer met Composer hebt geïnstalleerd, 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";bashHet trefwoord**‘require_once’**zorgt ervoor dat Composer slechts één keer wordt opgenomen. Anders kunnen er programmafouten optreden. De installatie met Composer is nu voltooid.
Optie 2: Direct downloaden van GitHub
De PHPMailer-bronbestanden kunnen ook handmatig worden gedownload door op de knop Code in de bijbehorende GitHub-repository te klikken en het ZIP-bestand te downloaden. Als Git op uw systeem is geïnstalleerd, kunt u de repository ook klonen met behulp van een opdrachtregelopdracht.
Stap 2: Bestanden uitpakken
Als u de broncode van PHPMailer handmatig hebt gedownload, moet u de ZIP-bestanden openen. Selecteer de locatie waar u PHPMailer wilt installeren 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);phpHoe u stap voor stap e-mails verstuurt met PHPMailer
Stap 1: Voeg naamruimten toe
Zorg ervoor dat de naamruimten correct zijn om toegang te krijgen tot PHPMailer. Hiervoor zijn Use instructies nodig, dus uw code moet de volgende regels bevatten:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;phpJe kunt de afzonderlijke lessen openen door de namen achter de laatste schuine streep toe te voegen.
Stap 2: Fouten opsporen
Hoewel PHPMailer een zeer betrouwbare 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-mailverzending voorkom je dat gevoelige gegevens op je mailserver als foutmelding naar gebruikers 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();
}phpStap 3: Authenticatie met SMTP
U moet zich authenticeren met SMTP om PHPMailer te kunnen gebruiken. Voer het adres van uw mailserver in naast het juiste protocol ( TLS/SSL of SMTP) en voeg de poort toe met uw gebruikersnaam en wachtwoord. Het protocol en de poort die u gebruikt, zijn afhankelijk van uw e-mailprovider. De betreffende servergegevens kunt u vinden op de website van de e-mailprovider.
$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;phpIn plaats van ENCRYPTION_STARTTLS kunt u ook ENCRYPTION_SMTPS als versleutelingsmethode gebruiken. Bij ENCRYPTION_SMTPS wordt alleen een verbinding tot stand gebracht als TLS TLS actief is. Dit betekent dat communicatie met een server alleen mogelijk is als de server de versleutelingsmaatregelen ondersteunt die nodig zijn voor een veilige overdracht. Bij StartTLS wordt de verbinding met de mailserver zonder versleuteling tot stand gebracht. Pas daarna wordt versleuteling toegepast. Als het niet mogelijk is om TLS-versleuteling toe te passen, vindt de resterende gegevensuitwisseling onversleuteld plaats.
SMTPS biedt een hoger beveiligingsniveau, terwijl StartTLSeen betere compatibiliteit heeft. Vanwege zijn compatibiliteit heeft StartTLS over het algemeen de voorkeur.
Stap 4: Vermeld de ontvanger van de e-mail
Nu kunt u de ontvangers 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');phpStap 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 belangrijk 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 addAttachment. Afbeeldingen, muziek, documenten, 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 overgedragen.
$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");phpStap 6: Gebruik de juiste tekencodering
Het is een goed idee om UTF-8 in PHPMailer in te schakelen om weergavefouten te voorkomen bij het verwerken van letters met accenten uit andere talen, vooral wanneer u verschillende 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';phpStap 7: E-mail verzenden
Nu is het tijd om je e-mail te versturen. Gebruik hiervoor het volgende commando:
$mail->send();phpHet is het beste om alle code die in het verzendverzoek wordt weergegeven, in het try-statementblok van uw script te plaatsen, zodat u eventuele fouten kunt opvangen.
Codevoorbeeld 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 afbeelding 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