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()

what to do ?

Recommended Answers

All 4 Replies

Open your php.ini file, look for the values of SMTP and smtp_port. Change these to the appropriate server and port. If you can't access php.ini (hosted site) use ini_set() like the error suggested.

You could use PHP Mailer and then configure an external mail server e.g. Gmail that's just an idea.
Maybe you are running Windows ?

You could use PHP Mailer and then configure an external mail server e.g. Gmail that's just an idea.
Maybe you are running Windows ?

Windows has nothing to do with it, he's probably using WAMP or XAMPP, and doesn't know how to configure the .ini file.

Google, my friend; Google.

Windows has nothing to do with it, he's probably using WAMP or XAMPP, and doesn't know how to configure the .ini file.

Google, my friend; Google.

Hi and I have been having having the same problem with the mail function but yes I know how to configure and instantly located the php.ini file. And yes I am using XAMPP. However I have found that it would take a genious to make this function work under windows. I have managed to modify the php.ini file in a way that will nolonger display the error message (with error messaging enabled) but the mail is never sent. I believe this is because the mail function was origionaly design for unix/linux but when importing to windows, not everything works 100%.

As fustrating as it may seem, I will share with you what I did to my php.ini file (with xampp and mailsender.exe) to make the error disappear (but no emails send though). First location the following string:

[mail function]

Then below alter the code as follows. But not to replace the email address me@gmail.com with your gmail address.

; For Win32 only.
SMTP = smpt.gmail.com
smtp_port = 465
;above default: 25

; For Win32 only.
sendmail_from = me@gmail.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "\xampp\sendmail\sendmail.exe -t"
sendmail_path = "\xampp\sendmail\sendmail.exe"

The above may only work if you are using XAMPP due to the last couple of lines. Then in the file located \xampp\sendmail\sendmail.ini alter the data as follows but again replace the email me@gmail.com with the same email you use before and replace the word "password123" (without the quotes) with your gmail password.

; 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=465

; 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=mail.google.com

; 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

auth_username=me@gmail.com
auth_password=password123

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines

pop3_server=pop.gmail.com:995
pop3_username=me@gmail.com
pop3_password=password123

; 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

force_sender=me@gmail.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=smtp.gmail.com

And that is all of the configurations I had changed. Note a server reboot or php & apache restart will be needed after the settings are changed. Then you shouldn't received the error message any more but you still won't be able to send the email.

PS. - I to would like to know not just how to escape the error message but also send the mail.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.