Je wilt graag op een goede en veilige manier met PHP e-mails versturen vanaf jouw website? Bij Vevida kun je met PHP e-mail versturen! We leggen je uit hoe je dit kunt doen met de PHP class PHPMailer.
De PHP class PHPMailer regelt alle ingewikkelde zaken voor je. Zoals bijvoorbeeld het inloggen op een SMTP-server of het gebruiken van TLS-versleuteling (encryptie). Dit zijn twee voorwaarden om smtp.vevida.com te kunnen gebruiken als SMTP-server voor het versturen van mail vanaf je website.
Het HTML5-mailformulier
Stel, je formulier ziet er – voor een deel – als volgt uit:
<form id="form1" action="mail.php" method="post">
<fieldset><legend>Uw informatie</legend>
<ol>
<li><label for="naam">Naam</label> <input id="naam" title="format: Voornaam Achternaam" name="naam" required="" type="text" autofocus="" placeholder="Voor- en Achternaam" /></li>
<li><label for="email">Email</label> <input id="email" title="example@example.com" name="email" required="" type="email" placeholder="example@example.com" /></li>
</ol>
</fieldset>
<fieldset><legend>Bericht</legend>
<ol>
<li><label for="bericht">Bericht</label> <textarea id="bericht" name="bericht" required="" rows="10" placeholder="Uw bericht ..."></textarea></li>
</ol>
</fieldset>
<fieldset><button name="submit" type="submit">Versturen</button></fieldset>
</form>
In dit formulier zitten drie verplichte velden verwerkt: naam, e-mail en bericht. De ingevulde gegevens worden gesubmit (verstuurd) naar het bestand mail.php dat zich in dezelfde map bevind. Meer informatie over de andere HTML5-formulierattributen vind je hier terug.
De PHP-code voor het versturen van de mail
Zoals eerder aangegeven, maken we gebruik van de PHP class PHPMailer om e-mail te versturen vanaf je website. Deze class moet je eerst downloaden en uitpakken op je eigen computer. Hierna plaats je de map src inclusief de bestanden in de map, waarin het mailformulier en mail.php ook staan. Dit kun je bijvoorbeeld doen met een FTP-programma.
Je kunt de bestanden van PHPMailer natuurlijk ergens anders neerzetten, maar dan moet je de paden in de include-opdrachten aanpassen.
In dit eerste gedeelte hoef je niets aan te passen. Hierin wordt de PHPMailer aangeroepen.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'src/Exception.php';
require 'src/PHPMailer.php';
require 'src/SMTP.php';
Nu dienen we het een en ander in te stellen. Hieronder vind je diverse velden met relevante uitleg erachter. Zo moet je jouw gebruikersnaam en wachtwoord hier opgeven om je te kunnen aanmelden op de SMTP server. Ook kun je nu instellen wie de ontvanger van het bericht is.
$inlognaam = 'mail@example.com'; // Gebruikersnaam voor smtp-server.
$wachtwoord = 'wachtwoord'; // Het wachtwoord van de smtp-server
$doelnaam = 'Naam ontvanger'; // Naam van de ontvanger.
$doeladres = 'mail@example.com'; // Adres van de ontvanger.
$onderwerp = 'Onderwerp'; // Onderwerp van het bericht.
Hierna wordt het tijd om de gegevens uit het formulier te verwerken in de e-mails die je gaat versturen. Als eerste controleer je of je wel een netjes ingevuld formulier aan het verwerken bent. De daadwerkelijke foutafhandeling laten we in dit artikel weg. Deze kun je zelf toevoegen aan het uiteindelijke script. Hierna stellen we een aantal zaken in: >$mail->addAddress gebruiken we om het adres op te geven waar het bericht naartoe moet worden gestuurd. De inhoud van het bericht wordt in de variabele $mail->Body geplaatst:
if (isset($_POST['submit'])) {
if(empty($inlognaam) or empty($wachtwoord) or empty($doelnaam) or empty($doeladres) or empty($onderwerp) or empty($_POST['naam']) or empty($_POST['email']) or empty($_POST['bericht'])) { // HTML5-validatie heeft niet gefunctioneerd, een of meer gegevens // zijn leeg. Voeg hier zelf goede, nette foutafhandeling toe } versturen($doelnaam,$doeladres,$_POST['naam'],$_POST['email'],$_POST['bericht'],$onderwerp,$inlognaam,$wachtwoord);
}
function versturen ($doelnaam,$doeladres,$zendnaam,$zendadres,$bericht,$onderwerp,$inlognaam,$wachtwoord){ $mail = new PHPMailer(true); try { //Server settings $mail->SMTPDebug = 0; // Toon debug-informatie. 0 = stil, 1 = basis en 2 = uitgebreid. $mail->isSMTP(); // Gebruik een smtp-server en niet de webserver. $mail->Host = 'smtp.vevida.com'; // smtp-server. $mail->SMTPAuth = true; // Authenticatie inschakelen. $mail->Username = $inlognaam; // Gebruikersnaam. $mail->Password = $wachtwoord; // Wachtwoord. $mail->SMTPSecure = 'tls'; // Encryptie via TLS. $mail->Port = 25; // Poort van de smtp-server.
// Ontvangers $mail->setFrom($zendadres, $zendnaam); // Afzender $mail->addAddress($doeladres, $doelnaam); // Ontvanger // $mail->addCC('cc@example.com'); // Eventueel CC-adres // $mail->addBCC('bcc@example.com'); // Eventueel BCC-adres
// Inhoud $mail->isHTML(true); // Schakel HTML-mail in. $mail->Subject = $onderwerp; $mail->Body = $bericht; $mail->AltBody = strip_tags($bericht); $mail->send(); // Het bericht is verstuurd. Zet hier een gereedmelding. } catch (Exception $e) { // Het bericht kon niet verstuurd worden. // Roep de waarde van $mail->ErrorInfo aan om te kijken wat er verkeerd ging. }
}
?>
Meer voorbeelden kun je ook vinden op de GitHub-pagina van PHPMailer zelf. Heb je nog vragen hierover? Neem dan gerust contact op met onze klantenservice.