Sometimes we may need to send emails in our local PHP projects. In order to do that, we may install a E-Mail server, but that could be a little bit tedious. The easiest alternative is using sendmail and the smtp server of any of your mail accounts (gmail, yahoo, hotmail, ETC).
In this example I’m showing how to configure sendmail to make it working with a Gmail account. But as I said you can make it working with any smtp server you have already.
1st step: Download sendmail
Download sendmail and extract all the files in the folder “C:\sendmail\”
2nd step: configure sendmail.ini
Open the file “C:\sendmail\sendmail.ini” and add the following params in the corresponding lines:
; configuration for fake sendmail ; if this file doesn't exist, sendmail.exe will look for the settings in ; the registry, under HKLM\Software\Sendmail [sendmail] ; you must change mail.mydomain.com to your smtp server, ; or to IIS's "pickup" directory. (generally C:\Inetpub\mailroot\Pickup) ; emails delivered via IIS's pickup directory cause sendmail to ; run quicker, but you won't get error messages back to the calling ; application. smtp_server=smtp.gmail.com ; smtp port (normally 25) smtp_port=587 ; the default domain for this server will be read from the registry ; this will be appended to email addresses when one isn't provided ; if you want to override the value in the registry, uncomment and modify default_domain= ; log smtp errors to error.log (defaults to same directory as sendmail.exe) ; uncomment to enable logging error_logfile=error.log ; create debug log as debug.log (defaults to same directory as sendmail.exe) ; uncomment to enable debugging ;debug_logfile=debug.log ; if your smtp server requires authentication, modify the following two lines firstname.lastname@example.org auth_password=your_password ; if your smtp server uses pop3 before smtp authentication, modify the ; following three lines pop3_server= pop3_username= pop3_password= ; to force the sender to always be the following email address, uncomment and ; populate with a valid email address. this will only affect the "MAIL FROM" ; command, it won't modify the "From: " header of the message content email@example.com ; sendmail will use your hostname and your default_domain in the ehlo/helo ; smtp greeting. you can manually set the ehlo/helo name if required ;hostname=
3ns step: Configure php.ini
Open the php.ini, find the following lines and add the path to the sendmail executable file. Don’t forget to restart the Apache server after doing that.
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = "C:\sendmail\sendmail.exe -t"
4th step: test it!
Just a little test to check if it’s actually working. Create a PHP script with the following code:
mail( 'firstname.lastname@example.org', 'Works!', 'An email has been generated from your localhost, congratulations!');