How to configure XAMPP to send Mail from Localhost in PHP ?

143

How to Configure XAMPP to Send Mail from Localhost in PHP
Hello friends, today in this blog you’ll learn How to configure XAMPP to Send Mail from Localhost in PHP. If you don’t know, XAMPP is an abbreviation for cross-platform, Apache, MySQL, PHP, and Perl. Using XAMPP we can work on our local server and test our local copies or projects of websites using PHP code and MySQL databases.

As a part of the experiment, developers need to send emails and we all know that sending mail from localhost using PHP can be much more painful if we don’t know how to properly configure XAMPP for it.

Before starting this blog, if you want to send an email in node.js applications, then you can see this blog How to Send Email in Node.js using Nodemailer & Gmail.

To send mail from localhost using XAMPP, we’ve to configure XAMPP after installing it. To configure the XAMPP server to send mail from the local host, we have to make some changes in two files one is PHP and another one is Sendmail.

First, go to the XAMPP installation directory and open the XAMPP folder and follow the below steps same: I’ve installed XAMPP in the C directory.

1. Go to the (C:xampp\php) and open the PHP configuration setting file then find the [mail function] by scrolling down or simply press ctrl+f to search it directly then find the following lines and pass these values. Remember, there may be a semicolon ; at the start of each line, simply remove the semicolon from each line which is given below.

[mail function]
For Win32 only.
http://php.net/smtp
SMTP=smtp.gmail.com
http://php.net/smtp-port
smtp_port=587
sendmail_from = your_email_address_here
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

That’s all for this file, press ctrl+s to save this file and then close it.

2. Now, go the (C:\xampp\sendmail) and open the sendmail configuration setting file then find sendmail by scrolling down or press ctrl+f to search it directly then find the following lines and pass these values. Remember, there may be a semicolon ; at the start of each line, simply remove the semicolon from each line which is given below.

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=your_email_address_here
auth_password=your_password_here
force_sender=your_email_address_here (it's optional)

That’s all for this file, press ctrl+s to save this file and then close it. After all changes in the two files, don’t forget to restart your apache server.

Now, you’re done with the required changes in these files. To check the changes you’ve made are correct or not. First, create a PHP file with the .php extension and paste the following codes into your PHP file. After pasting the codes, put your details into the given variables – In the $receiver variable put the receiver email address, in the $subject variable put the email subject and do respectively.

<?php
$receiver = "receiver email address here";
$subject = "Email Test via PHP using Localhost";
$body = "Hi, there...This is a test email send from Localhost.";
$sender = "From:sender email address here";

if(mail($receiver, $subject, $body, $sender)){
    echo "Email sent successfully to $receiver";
}else{
    echo "Sorry, failed while sending mail!";
}
?>

After completing these steps, just open this PHP file on your browser. If your mail is sent successfully then there is appears a success message “Email sent successfully to …..” and in the case your mail not sent then there is appears “Sorry, failed while sending mail!”.

If mail is sent then check whether the receiver has got your email or not. If yes, then great you did all changes perfectly. If not, check all the changes that you have done earlier are correct or not.

Note: Google removed the “Less secure apps” feature on May 30, 2022. So you need to do some extra steps and make changes in the files to send mail from localhost using Gmail.

Instead of using your Google account password as auth_password in sendmail configuration file, you need to use an App password which is 16 characters long.

To create an app password, go to manage your google account > Click Security > Under “Signing in to Google,” select App passwords > Select App & Device, and then you’ll get a 16-character code and this is your password. For more details about creating App Passwords, read the Official Google Article.

Previous articleAnimated Sidebar Menu using only HTML & CSS | Side Navigation Menu
Next articleLogin & Signup Form with Email Verification using PHP and MySQL

143 COMMENTS

  1. You've to create a PHP file with the extension .php and paste the last codes on that PHP file but before pasting the codes make sure you've configured the XAMPP and turn on less secure app on your google account. You can read this blog carefully.

  2. Hola buenas tardes, me manda el siguiente error:

    Advertencia:mail(): No se pudo conectar al servidor de correo en el puerto 25 "localhost", verifique su configuración "SMTP" y "smtp_port" en php.ini o utilice ini_set() en C:-xampp-htdocs-Verificacion de email-controllerUserData.php en la línea 33

  3. I followed all the steps but an error message appeared to me saying
    Warning: 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 C: xampp htdocs p1 mail.php on line 7
    Sorry, failed while sending mail

  4. Warning: 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 C:xampphtdocsusertablecontrollerUserData.php on line 33

    what does it mean

  5. Warning: 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 C:xampphtdocsusertablecontrollerUserData.php on line 33

    I KEEP GETTING THIS

  6. Warning: 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 C:xampphtdocsswdacontrollerUserData.php on line 33

    please help sir

  7. Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. x5sm10407906pfr.83 – gsmtp in C:xampphtdocsLogin and Signup Form with Email Verification – PHPcontrollerUserData.php on line 33

  8. <?php
    $receiver = "[email protected]";
    $subject = "Email Test via PHP using Localhost";
    $body = "Hi, there…This is a test email send from Localhost.";
    $sender = "From:[email protected]";

    if(mail($receiver, $subject, $body, $sender)){
    echo "Email sent successfully to $receiver";
    }else{
    echo "Sorry, failed while sending mail!";
    }

    This php file with what name we have to save and where it showing error

    Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. 78sm5550625pfz.211 – gsmtp in C:xampphtdocsLogin and Signup Form with Email Verification – PHPcontrollerUserData.php on line 33 (Failed while sending code) I configure all xampp and sendmail settings.

  9. Create a php file inside the HTDOCS folder with .php extension and paste the following codes in this file then put the receiver email and sender email address in the mentioned fields.

  10. Warning: 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 C:wamp64wwwlogincontrollerUserData.php on line 118
    what was the mistake?

  11. Warning: mail(): SMTP server response: 530 5.7.0 Must issue a STARTTLS command first. r17sm13504747pfr.153 – gsmtp in C:xampphtdocsmail.php on line 7
    Sorry, failed while sending mail!

    bro, create a telegram group so that we will share our queires there so that you can respond to all

  12. Notice: Undefined index: message in C:xampphtdocsmail.php on line 3

    Warning: mysqli::__construct(): (HY000/1049): Unknown database 'contact us' in C:xampphtdocsmail.php on line 6
    Connection Failed : Unknown database 'contact us'

  13. Notice: Undefined index: message in C:xampphtdocsmail.php on line 3

    Warning: mysqli::__construct(): (HY000/1049): Unknown database 'contact us' in C:xampphtdocsmail.php on line 6
    Connection Failed : Unknown database 'contact us'

  14. Hi thanks for this tutorial and instructions but I got the error warning after I signed up.

    The data is already input on my data base. Name, email, password and the code also the verification

    But the email is not.
    Warning said is mail():SMTP server response 530 5.7.0 must issue a starTTLS command first.gjlsm12559445pjb.11 – gsmtp in "distinction folder" on line 33 where located this code–>> if(mail($email, $subject, $message, $sender)){ . . . . ..

  15. sorry to disturb admin. I have followed the instructions for creating your website and I entered the registration menu. I have filled in all the data then I press the register button. a text appears. FAILED WHEN ENTERING DATA TO DATABASE ??
    Please explain where I went wrong. Thank you

  16. sorry to disturb admin. I have followed the instructions for creating your website and I entered the registration menu. I have filled in all the data then I press the register button. a text appears. FAILED WHEN ENTERING DATA TO DATABASE ??
    Please explain where I went wrong. Thank you

  17. sorry to disturb admin. I have followed the instructions for creating your website and I entered the registration menu. I have filled in all the data then I press the register button. a text appears. FAILED WHEN ENTERING DATA TO DATABASE ??
    Please explain where I went wrong. Thank you

  18. Thanks for the tutorial. I got this error:
    21/01/20 11:13:23 : Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentials f13sm1134675iog.18 – gsmtp

    To fix this problem, I had to login to my Gmail account, go to security, and then turn on "Less secure app access." This is "not recommended" according to Google, but it wouldn't work without this setting turned on.

  19. i already got it after 3h THANKK YOU.
    for errors , kindly restart your apache after encoding those codes.
    and some are in comment in php.ini so we should remove the " ; " to enable the lines
    after that dont forget to enable the less app in gmail settings

  20. Warning: mail(): Failed to connect to mailserver at "smtp.gmail.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocsSIScontact.php on line 41

    its been 2hrs since ive been trying to read the blog
    pleasseeee helpppp

  21. I keep getting this error. Please help. I have configured properly as mentioned abovee

    Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

  22. Thanks worked .. I was getting multiple issues ..as I open the .ini files in notepad… If you can update the comment .. the ini.. to be opened in PHP … most error will be sorted.

  23. $receiver = "receiver email address here";
    $subject = "Email Test via PHP using Localhost";
    $body = "Hi, there…This is a test email send from Localhost.";
    $sender = "From:sender email address here";

    if(mail($receiver, $subject, $body, $sender)){
    echo "Email sent successfully to $receiver";
    }else{
    echo "Sorry, failed while sending mail!";
    }
    where want to paste this code. pls

  24. I didn't recieve the email, and yes, I turn on the "less secure apps" on Google. The blog was great but I think you should update it, so that you can address the multiple problems we are all having.

  25. i watched your other tutorial and i have a question sir?
    should i enter the last part of the code PHP CODE: to my controllerUserData.php or separate file?

  26. hi, sir please make the video for this process please sir soon I am waiting for your video. make as soon as possible.

  27. Hi. What can i do when i got “Email sent successfully”, but i don’t get any mail on my mail inbox? i enabled that thing with “not secure sites” on my account, but i still don’t get any mail. Do you know how can i fix this? I’ve been struggling 4 days to resolve this. Help, please!!

      • But if i get the “Email sent successfully”, that means it should work, right? It can’t be a server error or something, right??? I’m really tired, i can’t give up, because i can’t finish my site without it. I worked over 20 hours to resolve this problem, :(( I’m gonna ask a friend if he can do that. Thanks for your help btw

    • Make sure you’ve entered an email that exists and you may have to wait a minute because it may take some time. You can also check your spam folder.

  28. Hi, thx for your tutorial, the last internet page says it worked, but I don’t get anything in my mailbox after 20 minutes, is it normal ?

    And, I’m actually learning programmation, and for my projet, in C# I would like to send mail, and we just work in localhost, so I guess what you have showed here should be useful to me.
    Cause I use XAMPP, but how can I use this php script now ? Do you have an Idea ? Or maybe I am totally wrong

    (Sry for my very bad english, I’m french and we are known to be the worst guys in world to learn other language ^^’)

  29. thanks bro, you are a life saver, took me up to 3 hours watching and reading the article together before having a clear understanding. it works perfectly, i am very grateful

  30. I found a solution! 🙂
    https://support.google.com/accounts/answer/185833

    1. Go to your google account
    2. Select Security
    3. Under Signing in to Google select App Passwords
    4. Select App > Mail
    5. Select Device > (I am using Windows Computer)
    6. Click Generate

    Use this generate code as the auth_password in the sendmail config textfile instead of your actual password and it should fix the problem!

  31. Sir please i need ur help how did you know php, i want to learn php but i can’t understand, i have no idea php is so hard for me to learn, please teach me php

LEAVE A REPLY

Please enter your comment!
Please enter your name here