PHP expert |
|
Zoals de pagina op PHP.net het al beschrijft wordt het gebruik van de functie mail() voorgeschreven als volgt:
Citaat: bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
Als we dit nu eens van naderbij gaan bekijken, dan zien we dat jouw probleem zit bij de vierde parameter $additional_headers. In jouw script probeer je een e-mailadres door te spelen aan deze functie via een parameter waar je eigenlijk headers in zou moeten zetten. Een header is een soort van hoofding die aan het begin van een e-mailbericht wordt geplaatst. Hierin staat onder meer informatie over de email, de ontvanger, de verzender, een bijlage enzovoort. Voor de volledige details moet je maar eens de rfc doornemen.
Een simpel voorbeeldje van hoe we zoiets doen is dus bijvoorbeeld dit:
<?php
$naar = 'Koen Van den Wijngaert <koen@sitemasters.be>';
$onderwerp = 'foobar';
$bericht = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam at elit et mauris blandit commodo nec ut justo. Integer eu sapien elit, non feugiat lorem.';
// Interessante deel:
$headers = "From: Ik <ik@sitemasters.be>\r\n";
$headers .= "Reply-To: Mezelf <ik@sitemasters.be>\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$mail_sent = mail($naar, $onderwerp, $bericht, $headers);
if($mail_sent)
{
echo 'Jippie, de mail is succesvol verstuurd!';
}
else
{
echo 'Oeps, er is een foutje opgetreden bij het verzenden van dit bericht.';
}
?>
<?php $naar = 'Koen Van den Wijngaert <koen@sitemasters.be>'; $onderwerp = 'foobar'; $bericht = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam at elit et mauris blandit commodo nec ut justo. Integer eu sapien elit, non feugiat lorem.'; // Interessante deel: $headers = "From: Ik <ik@sitemasters.be>\r\n"; $headers .= "Reply-To: Mezelf <ik@sitemasters.be>\r\n"; $mail_sent = mail($naar, $onderwerp, $bericht, $headers); if($mail_sent) { echo 'Jippie, de mail is succesvol verstuurd!'; } else { echo 'Oeps, er is een foutje opgetreden bij het verzenden van dit bericht.'; } ?>
Ik kan je moeilijk met dit stukje code de straat op sturen, vandaar dat ik even kort zal toelichten wat er zich nu precies heeft afgespeeld in bovenstaande code.
Eerst heb ik de ontvanger gespecificeerd, de ontvanger kan je schrijven als "koen@sitemasters.be", of "Koen Van den Wijngaert <koen@sitemasters.be>". Beiden zijn correct, de tweede optie ziet er alleen maar netter uit. Na ook het onderwerp en het bericht te hebben getypt komen we aan bij het interessante deel waar het ons eigenlijk om te doen was, de mail headers. In het voorbeeld hebben we enkele van de veel voorkomende headers gebruikt. De "From" header is misschien wel de interessantste, deze is ook de header die jij nodig zal hebben om een afzender mee te sturen. "Reply-to" duidt aan naar waar de mail wordt verstuurd indien er op "Beantwoorden" wordt geklikt in de mail client en X-mailer stuurt het medium waarmee de mail werd verstuurd mee, in dit geval PHP. Vergeet niet dat headers altijd moeten gescheiden worden door een carriage return (\r) en een line-feed (\n)! Voor een volledige lijst met e-mail headers verwijs ik je door naar de eerder vernoemde RFC.
Succes ermee |