php mail() function on localhost

php mail() function
how to send mail from localhost in php using xampp
how to send mail from localhost in php using wamp
how to use mail function in php from localhost
how to send mail from localhost in php using phpmailer
mail function in php not working in localhost xampp
how to send mail in php from localhost

I have problem with php mail() function on localhost server. I can't test my email application on localhost when i'm trying to send emails with php function mail().

I'm getting this error Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in F:\wamp\www\product\ajax.php on line 64

I'm using WAMP server and if anyone knows solution please help me.

You need to setup a mail server on your machine for the mail function to work. If you are on Windows (which I am guessing you are from your use of WAMP) you can setup a Pegasus mail server.

Other options include using a wrapper class such as SwiftMailer or PHPMailer and using them to connect to another SMTP server such as your GMail account. Even if you go the Pegasus mail server on your own localhost route then I would still recommend using one of the two classes I have mentioned above. They give you far more flexibility and are safer.

Connecting to either your ISPs SMTP server or GMail or whatever is the easiest route out of this one.

php mail() function on localhost, in php using SMTP".I have used GMAIL SMTP to send mail from localhost using php. Step 5: Send mail using php mail() function. PHP. mail("","Success","Send mail from localhost using PHP"); Sometime port 25 is not opened, so you need to change 587 OR 465. Now you have configured mail from localhost and use it.I hope this php tutorial help to understand working functionality of mail and sending mail from localhost using PHP SMTP.

After spending 2 days on this php mail function issue I have figured it out and would help you do same. This has wasted enough time, Let's begin...

PHP has an in-built php mail function that can be used to send mail from script but this function is somehow limited because it cannot connect you to a simple mail transfer protocol (SMTP) server. I am assuming you are using WAML/XAMPP, haven't really tried XAMPP but you could figure that out following this:

First we would have to find a way to connect our web server(wamp) to an external SMTP. We would be using Gmail in this case but before that, we need to download/install a tool that would grab our email from the php script and push it to the Gmail SMTP.

  1. First go to and click on the download to download.
  2. After downloading, extract to C:\wamp\ extract it as a folder meaning it's contents should be in a folder called sendmail and can be located at C:\wamp\sendmail.
  3. Now in the send mail folder, right click on sendmail.ini and open as an administrator since we are about to modify its contents.
  4. change the following lines

    smtp_port= 465
    auth_username= enter your gmail account here        
    auth_password= enter the password for that account here
    hostname= localhost 

    Please be careful and do as you see above. I have deleted most of the unwanted contents from my sendmail.ini file to make things a little easier to read.

  5. Save the file

  6. Navigate to your wamp folder and move to bin\apache\apache[version here]\bin\php.ini and modify the php file as an administrator as follows:

    If you are using notepad, you can use the find under the edit tab or ctrl+F and type in "mail function" to quickly navigate to the mail function part of the php.ini file.

    [mail function]
    ;For Win32 only.
    ;SMTP = localhost
    ;smtp_port = 25
    ;For Win32 only.
    ;sendmail_from = 
    ;For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    sendmail_path = "C:\wamp\sendmail\sendmail.exe -t -i" ----> this is the changed part. 

    Note: It is only the sendmail_path that you have to change to the above. Leave other settings as you see them. Your path maybe different depending on where you extracted the sendmail folder to.

  7. Save that php.ini file

  8. Move back to C:\wamp\bin and chose php\php[version here]\php.ini and edit the sendmail path as you did above and save the file as an administrator/or before you open, open as an administrator by right clicking

  9. Run wampserver as an administrator and when it turns green turn on the following:

    Left click on the green icon and move to php -> php extensions -> php_sockets (click to have the black check on it)

    wait for the icon to turn green again and follow the above to turn on php_openssl.

    If the icon turns green it is time to turn on apaches ssl_module by moving to the apache icom when you click on the green wampserver icon. You can find this at Apache modules.

    When you are done with three steps above exit and run wampserver again as an admin to effect changes.

  10. Move back to the sendmail extracted folder and right click on sendmail.exe Go to its properties -> compatibility -> change settings for all users -> compatibility mode [change to windows xp (service pack 3) ] -> Run this program as an administrator [check this option].

    Save and Apply. We had to do this so that each time we call the sendmail App, it would run as an admin.

  11. Now we need to configure our gmail account to work with this sendmail App. Log into gmail account and at the top right corner click on the gear to choose settings. At settings move to Forwarding and POP/IMAP tab and enable IMAP. Save changes

  12. Finally get back to your inbox, an the topmost right corner beside your email address is a little arrow pointing down, click on it to choose My Account. If you don't have that, you can try clicking on your profile picture to choose My Account from there.

    Click on the Sign-in & security tab and scroll down to the bottom of the page. You would find Allow less secure apps: and turn it on. Mostly this would be off.

  13. That's all you need to do so you can now send email from your php scripts on localhost. You can now try your mail() function with the 4 minimum parameters and see. Hope this helps. Vote if it helps so i can take time to post more interesting solutions.

How To Send Email From Localhost Using PHP, If you're not familiar with mail() , it's a single function that only requires three arguments—a recipient, subject, and message—to deliver an email� Often it's helpful to find the exact error message that is triggered by the mail () function. While the function doesn't provide an error directly, you can use error_get_last () when mail () returns false.

This is a well-known issue with using mail() on Windows, where you typically don't have a local SMTP service. As your error message says, you need to define SMTP settings in your php.ini to talk to a mail server through which you are allowed to send outbound messages, with or without authentication. See mail() docs.

How to Debug and Fix PHP Mail in Localhost, A video tutorial showing you how to test the mail function on localhost without having to install Duration: 6:07 Posted: Apr 16, 2013 You don't have to install an MTA on your computer to test PHP's mail () function. On Unix based systems (Linux, *BSD, OS X, etc.) you can set sendmail_path to something like tee mail.out > /dev/null. This will put the emails (including the headers) in a file called mail.out. Here is an example of how it would work:

Try to setup the mail server for localhost. Otherwise it'll not work in localhost.

PHP: Testing Mail Function On Localhost, PHP Mailing : Sending mails through mail() in localhost and production “ localhost” port 25 Duration: 7:22 Posted: Feb 15, 2018 The PHP built in function mail () is used to send mail from PHP scripts Validation and sanitization checks on the data are essential to sending secure mail The PHP built in function filter_var () provides an easy to use and efficient way of performing data sanitization and validation

The easiest way I have found to create a mail sever in windows is to install Python and then use the inbuilt SMTP debug server with the following one-liner:

python -m smtpd -c DebuggingServer -n localhost:25

On Windows, I have found that it sometimes has strange behaviour with localhost and so, if all else fails, you could trying finding your IP address using the 'ipconfig' command (at the DOS command prompt) and you might see something like:

c:\> ipconfig

-- stuff cut here ---

Wireless LAN adapter WiFi:

Connection-specific DNS Suffix  . :
Link-local IPv6 Address . . . . . : fe80::856d:fd33:3e01:e656%9
IPv4 Address. . . . . . . . . . . :
Subnet Mask . . . . . . . . . . . :
Default Gateway . . . . . . . . . :

and, let's say you find you ip address is (as I did in the example above), then changing the command to look like:

python -m smtpd -c DebuggingServer -n

And setting the following lines in your php.ini file:

[mail function]
; For Win32 only.
smtp_port = 25

And, this has worked for me on occasions where nothing else does!

I also note you can check if you local mail server is working by typing the command:

C:/> telnet localhost 25

or for my second configuration:

C:/> telnet 25

Telnet comes for free on Linux but to get it on windows you have to go to "Programs and Features" and then click "Turn Windows feaures on and off" (from the little panel on the left) and then check the box for "Telnet Client" in the list of Windows Features.

When you run the telnet command you will see something like this if the server is not running:

C:\Projects>telnet localhost 25
Connecting To localhost...Could not open connection to the host, on port 25: Connect failed

But, if it is all working you should get the screen cleared and a "server identifier" string back from the mail server. On my machine this looked like:

220 ZOOT Python SMTP proxy version 0.3     

If you are really keen you can type some SMTP commands and send a mail here or you can type 'quit' to disconnect from the server.

PHP Mailing : Sending mails through mail() in localhost and , For those of you with the exim, if its not sending mail with the -i option and you cant easily change this, you might want to check out the imap_mail() function� PHP’s built-in mail function () is very simple, but it provides limited functionality for sending emails. You won’t be able to add attachments to your email, and building a beautiful HTML template with embedded images will be a tricky task as well.

Mail Functions - Manual, Sending Emails Using API in Flask-Mail � PHP | Sending mails using mail() function � How to send a GET request from PHP? Express.js res.send()� php email localhost. share | improve this question | follow | asked Feb 10 '13 at 21:07. user1995927 user1995927. 167 1 1 gold badge 2 2 silver badges 10 10 bronze badges. Have you configured SMTP to send e-mail via your ISP's mail servers? – ceejayoz

How to configure XAMPP to send mail from localhost using PHP , PHP's built-in mail function () is very simple, but it and images; send emails via localhost and Xmapp� Definition and Usage The mail () function allows you to send emails directly from a script.

Sending Emails in PHP, PHP comes with a default function mail() that allows you to sendmail [mail function] ; For Win32 only. ; SMTP = localhost� The php mail () function allows you to send emails directly from a php script. This tutorial shows you how to test if php mail is working correctly. Test php mail () on your Web Server 1.

  • Do you even have a mail server installed?
  • +1 for swift or phpmailer because of the more flexibility they add to your project instead of relying in your servers mail() config
  • Very extensive answer, it worked. Thank you very much @linuxhini !!
  • Worked perfectly for me, in Windows 10 with XAMPP. Since XAMPP comes with sendmail, I skipped steps 1, 2, 9, and 10.
  • this should be the accepted answer. it's totally working