Web Tip #7 - Stuur email met PHP
Het is eenvoudig mogelijk om met PHP een email te versturen. De mogelijkheden zijn vrijwel onbeperkt. U kunt bijvoorbeeld iemand die een
formulier op uw website heeft ingevuld met een vraag of bestelling een bevestiging sturen.
Of een nieuwsbrief automatisch versturen. Of regelmatig een backup van uw site emailen. Of ... u kunt zelf vast nog veel meer verzinnen.
Op een Unix/Linux host gaat het iets anders, hier dient u het pad naar sendmail aan te geven, eventueel met parameters. Als u een locale sendmail in uw pad heeft, is er helemaal niets nodig:
Configuratie
Ten eerste moeten de mail instellingen in php.ini worden geconfigureerd. Op een Windows host moet de SMTP server worden geconfigureerd:[mail function] SMTP = localhost smtp_port = 25De smtp_port is bijna altijd 25; vervang localhost door uw SMTP host.
Op een Unix/Linux host gaat het iets anders, hier dient u het pad naar sendmail aan te geven, eventueel met parameters. Als u een locale sendmail in uw pad heeft, is er helemaal niets nodig:
;sendmail_path =
Een eenvoudige email
De PHP functie mail wordt gebruikt om emails te versturen. Dat gaat als volgt:<?phpVervang wel info@open-t.nl door uw eigen email adres. Tijd om het script te runnen en in uw inbox te kijken...
$bodytext="Mijn eerste PHP email!\n";
$subject="Mijn email onderwerp";
mail("info@open-t.nl", $subject,$bodytext);
?>
Headers
De email komt aan, met de juiste body tekst, maar het afzender adres is meestal niet 100% correct. Dit komt omdat er geen expliciete headers worden toegevoegd. Dit zult u dus zelf moeten doen. De headers moet u zelf formatteren. De header string bestaat uit één of meerdere regels die elk beginnen met een keyword, een dubbele punt, een spatie en dan de inhoud, afgesloten met een newline. Bijvoorbeeld als volgt:<?phpSommige eenvoudige smtp mailers vervangen de headers echter, het is dus zaak om op uw eigen systeem uit te proberen wat er gebeurt.
$headers = "From: \"Joost Horward\" <joost@open-t.nl>\n";
$headers .= "To: \"Info\" <info@open-t.nl>\n";
$bodytext = "Mijn tweede PHP email!\n";
$subject = "Mijn email onderwerp";
mail("info@open-t.nl", $subject,$bodytext,$headers);
?>
HTML mail
Tot nu toe is uw mail 'platte' ASCII tekst. Een HTML mail is natuurlijk veel mooier. Dat kan als volgt:<?phpDe Content-Type header geeft aan dat het een HTML mail betreft, zodat uw mailclient weet hoe hij weergegeven moet worden. Helaas is de ondersteuning van HTML in veel mail programma's beperkt, met name op het gebied van CSS. Ook hier is het dus zaak uit te proberen hoe het er uit ziet op de mail clients die u wilt ondersteunen.
$headers ="Content-Type: text/html;\n";
$bodytext ="<html><p>Dit is een HTML email.";
$bodytext .="Hiermee kunt u leuke dingen doen zoals ";
$bodytext .="<b>bold</b>, <i>italic</i> enzovoorts.";
$bodytext .="</p></html>";
$subject="Mijn email onderwerp";
mail("info@open-t.nl", $subject, $bodytext,$headers);
?>
Verder...
Met email kan natuurlijk veel meer,zoals:- Een alternetieve (text) body aanbieden in een HTML mail
- Attachments toevoegen met binaire inhoud
- Op afstand controleren of een mail gelezen is