Hoe een email te versturen met php
Wat is de simpelste manier om een mail te versturen?
Om een email te versturen met behulp van php kun je de ingebouwde functie van php gebruiken, deze functie heet zoals je misschien wel kunt raden mail.
Je kunt deze als volgt aanroepen:
<?php
// het bericht dan je zou willen versturen
$bericht = "Beste jantje,\n\nIk wil je graag mijn eerste php mail sturen.\n\nMet vriendelijke groet,\n\nJe buurman";
// email verzenden
mail("jantje@jebuurman.nl","Onderwerp",$bericht);
?>
Deze mail zal zeer waarschijnlijk wel in de spambox van je buurman terecht komen gezien er geen headers worden gebruikt maar daarover later meer. Dit is de simpelste manier om een mail te versturen. Je verstuurd hier dan een tekst bericht, de opmaak zal dus niet bepaald mooi zijn. Door het toevoegen van \n in de email kun je enters toevoegen aan je email en hem een beetje leesbaar maken.
Gebruik van een mail class (phpmailer)
Liever een html mail versturen? Dan is dat natuurlijk ook mogelijk. De eenvoudigste manier om dit voor elkaar te krijgen is door een class te gebruiken genaamd phpmailer. Je kunt phpmailer vinden op github onder PHPMailer/PHPMailer. Hieronder een voorbeeld van hoe je deze kunt gebruiken.
<?php
//Dit bestand downloaden van github (is te vinden in de src map)
require 'phpmailer.php';
//Maak een nieuwe PHPMailer instantie
$mail = new PHPMailer();
//Instellen van wie het bericht vandaan komt
$mail->setFrom('harry@jansen.nl', 'Harry Jansen');
//Stel een alternative beantwoord adres in
$mail->addReplyTo('info@jansen.nl', 'Harry Jansen');
//Naar wie mag het bericht worden verzonden?
$mail->addAddress('blije@ontvanger.nl', 'Blije Ontvanger');
//Wat is het onderwerp van de email
$mail->Subject = 'Mijn eerste mail met php';
//Lees een geheel bestand in vanaf een extern bestand, converteer afbeeldingen om te gebruiken in de email
$mail->msgHTML(file_get_contents('jouwemail.html'), __DIR__);
//Vervang the text body door de volgende tekst, voor als html niet werkt
$mail->AltBody = 'Alternatieve tekst als html niet werkt';
//Koppel een afbeelding aan de email
$mail->addAttachment('phpmailer.png');
//Verstuur het bericht en controleer op errors
if (!$mail->send()) {
echo 'Mail fout: ' . $mail->ErrorInfo;
} else {
echo 'E-mail verzonden!';
}
?>
Mail in de spambox
Niet elke mail gaat in de inbox van de ontvanger terecht komen, dit komt omdat er veel spamfilters zijn die elke email controleren op een aantal dingen. Spammers versturen hun mails automatisch en gebruiken hiervoor vaak valse email adressen, dus niet bestaande email adressen. Je zou bijvoorbeeld als afzender bill@microsoft.com kunnen instellen, een spamfilter weet dan al snel dat deze mail niet in de inbox maar in de spambox hoort. Spamfilters weten uiteraard niet wie bill gates is maar ze kunnen wel controleren of je wel mag mailen van het domein dat je gebruikt. Als je mailt vanaf je eigen domeinnaam kun je bij de domein instellingen in de DNS (in de SPF record) instellen welke ip adressen mail namens dit domein mogen versturen. Als dit goed staat ingesteld dan is de kans groot dat je mail goed aankomt. Naast het instellen van de SPF record is het natuurlijk ook nodig een afzender in te stellen in je email, als je dit niet doet dan is de mail voor de spambox.
Nog geen php, installeer deze dan eenvoudig
Om dit te kunnen laten werken heb je uiteraard wel de mogelijkheid nodig om met php te kunnen werken. Nog geen php op je windows machine? Lees dan de tutorial Eenvoudig PHP en Mysql op windows installeren. Als je nog vragen hebt of niet weet hoe je verder moet komen, stuur dan gerust een berichtje.
Verder leren
Smaakt dit naar meer? Bekijk dan zeker ook de andere tutorials.