Gmail gebruiken in Xampp

19 januari 2016

Bij het gebruik van de xampp ontwikkel omgeving is het soms nodig om emails te versturen. Xampp is standaard zo ingesteld dat een email als tekst bestand in de mailoutput directory worden opgeslagen. Je kunt xampp ook zo instellen dat er daadwerkelijk email verstuurd worden, bijvoorbeeld via Gmail.

Als eerste moeten SMTP instellingen toegevoegd worden aan het bestand sendmail/sendmail.ini:

smtp_server=smtp.gmail.com
smtp_port=587
auth_username=your_username@gmail.com
auth_password=your_password
force_sender=your_username@gmail.com
hostname=smtp.gmail.com

Vervolgens moeten er SMTP instellingen aan het bestand php/php.ini toegevoegd worden:

SMTP = smtp.gmail.com
smtp_port = 587
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
mail.add_x_header=Off

Schakel de volgende regel uit door er een puntkomma voor te zetten:

sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"

Herstart vervolgens de apache webserver om de wijzigingen door te voeren. Er zal nu contact gemaakt worden met de smtp mail server van Gmail bij het versturen van emails.

Dit is echter nog niet voldoende. Als er nu email verstuurd wordt, krijg je van Gmail een email dat er een inlogpoging geblokkeerd is. Ook zie je in het bestand sendmail/error.log een foutmelding:

<https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsNDdFFJZ<EOL>6iqeYqLPPUqCbaUB8jzoZ<EOL>8VKk> Please log in via your web browser and<EOL>then try again.<EOL> Learn more at<EOL> https://support.google.com/mail/answer/78754 gb9sm27801048wjb.26 - gsmtp<EOL>

Het gebruik van SMTP om in te loggen wordt door Gmail gezien als beveiligingsrisico en daarom geblokkeerd. Om dit op te lossen moet je een beveilingsinstelling van je Gmail account aanpassen zodat apps met een lagere beveiliging toegang krijgen. Dat doe je hier: https://www.google.com/settings/security/lesssecureapps. Ik raad je aan om dit alleen te doen als je daadwerkelijk aan het testen bent. Schakel deze instelling weer uit zodra je klaar bent.

Je kunt het versturen van email testen met deze voorbeeldcode:

<?php

$result = mail('email@example.com', 'test subject', 'test body');

echo (int) $result;