Je wilt graag op een goede en veilige manier e-mails versturen vanaf jouw website met PHP? 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 upload je de bestanden class.phpmailer.php, class.smtp.php en PHPMailerAutoload.php naar je website. Dit kun je bijvoorbeeld doen met een FTP-programma.

Waar je deze bestanden precies neerzet, maakt niet zo heel veel uit. Zolang het require()-pad maar naar de juiste locatie verwijst. Dit is natuurlijk ook afhankelijk van waar je het HTML-formulier en het mail.php bestand plaatst.

In dit eerste gedeelte hoef je niets aan te passen. Hierin wordt de PHPMailer aangeroepen en aangegeven dat de server van Vevida moet worden gebruikt.


<?php

require 'PHPMailerAutoload.php';

$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = "smtp.vevida.com";
$mail->Port = 25;
$mail->SMTPAuth = true;

Nu dienen we het een en ander in te stellen. Zo moet je jouw gebruikersnaam en wachtwoord hier opgeven om je te kunnen aanmelden op de SMTP server. Ook kun je nu instellen welke gegevens er als afzender worden meegestuurd.


$mail->Username = "emailadres@example.com";
$mail->Password = "wachtwoord";
$mail->setFrom('emailadres@example.com', 'Voornaam Achternaam');
$mail->Subject = 'Mailformulier vanaf de website';

Hierna wordt het tijd om de gegevens uit het formulier te verwerken in de e-mails die je gaat versturen. Als eerste controleren 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 naartoe het moet worden verstuurd. De inhoud van het bericht wordt in de variabele $mail->Body geplaatst:


if (isset($_POST['submit'])) {
	if(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
		}
	$mail->addAddress($_POST['email'], $_POST['naam']);
	$mail->Body = $_POST['bericht'];
	if (!$mail->send()) {
		echo "Mailer Error: " . $mail->ErrorInfo;
	} else {
    	echo "Message sent!";
    }
}
?>

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.

Wat vond je van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.