I always had problem for testing my PHP codes which were include mail function. I used to upload them on server to test them. But today I decided to find the way to send the mail with PHP using XAMPP from localhost and I found the solution. Then I decided to share this simple tip with you guys. Before we start the procedure you need to have an email address on a running mail server such as Yahoo, Gmail or any other server that you have access to configuration of them as well, because we need their port number.
- First go to the path that you installed Xampp application. By default it is "C:\xampp\".
- Then we need to find the php.ini file which contains the configurations belong to PHP. This file by default is located at "C:\xampp\php\php.ini". Open it using any text editor like notepad.
- Using search in the editor try to find "sendmail_path". There should be two of them. One is commented using a ";" (semicolon) in the beginning of the line , and the other one is not commented. Comment the one that is active and active the one is commented. After the edit it should looks like below... (Similar)
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
; XAMPP: Comment out this if you want to work with mailToDisk,...
;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe" - Save the php.ini file and restart the Apache process. This is necessary for the configuration to take place.
- Next navigate to the sendmail directory. By default it should be located at "C:\xampp\sendmail" and open the "sendmail.ini" in the text editor.
- Now we need to set the configuration for the mail server. For this case I chose Gmail. The SMTP address of Gmail is: "smtp.gmail.com" and the SMTP port for Gmail is "587".
- Find "smtp_server" and write the Gmail SMTP address in front of that.
- Find "smtp_port" and write the Gmail SMTP port in front of that.
- Scroll down , you should be able to see "auth_username" & "auth_password". Put your gmail username in front of auth_username and put the password in front of auth_password .
- Save and now you are good to send mail from local host.
- Note that your PHP mail function should have "from" header,otherwise your mail will not go through.
- Also remember the that the destination will receive the mail from your Gmail address not from the address you put in your PHP code.
- The following code is a simple example of PHP script which can send a successful mail.
<?php
$to = "[email protected]";
$subject = "The mail subject goes here";
$content= "And this is the mail content!";
$headers = "From:[email protected]\r\n";
mail($to,$subject,$content,$headers);
?>
THIS MAY NOT WORK ON SOME OF WINDOWS 8 OR 8.1 DUE TO THE SECURITY LIMITATION.
Please make sure your firewall, antivirus or other security software is not stopping the sendmail.exe to communicate with internet!
Please make sure your firewall, antivirus or other security software is not stopping the sendmail.exe to communicate with internet!