PHP send e-mail - php

Okay, so I'm new to php, and so I searched this site to find out how to send an e-mail to myself after a user fills out a contact form. I found this answer.
Send email with PHP from html form on submit with the same script
I'm using the code from the selected answer. I tried the top answer, by combining both sections into a single php page, and the second, using an html and php page, but I get the following errors:
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 (MY WEBSITE) on line 14
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 (MY WEBSITE) on line 15
"MY WEBSITE" was put there by me.
Lines 14 and 15 are these:
mail($to,$subject,$message,$headers);
mail($from,$subject2,$message2,$headers2);
Why am I getting this issue? I'm doing exactly what the poster said to do.

You are running PHP on Windows. On Unix-like systems, PHP is able to use the built-in sendmail command to send emails, and so needs no further configuration. On Windows, however, that command doesn't exist, so PHP sends email via an external SMTP server.
In order to send emails, as the error messages explain, you will need to configure your php.ini file or use ini_set() to set the SMTP and smtp_port ini settings. You'll want to specify a SMTP server and smtp_port (usually 25) that you can send email from. If you are running php from your home computer, this would probably be whatever mail server your ISP gave you. If you are are on a third-party hosting provider, you would have to get email server information from them (and they may not actually allow sending email, or may put tight controls on how much you can send, to prevent spam).
The location of the ini file is set by both configuration and convention. PHP's configuration file documentation. On Windows, a long list of registry keys is checked, before eventually falling back to C:\windows or C:\winnt, so that is where you should look for your ini file. (Running php --ini will also show where it's actually trying to read the ini file from.)
There is a sample configuration file shown in the configuration file documentation. If you don't already have a php.ini that was installed when you installed PHP, you can use that format to guide you in creating a new file.

I would bet you are on a Linux server or the host server has the mail function built in turned off. You are not with out options though.
First consider your server. If your server is a shared server and you are likely to have your mail sent to spam if it is delivered at all. Most websites will out source their message systems to keep the load off the server and to ensure delivery.
If you are not in the market for outsourcing your mail services you will need to use a library that will do most of the heavy lifting for you. I would recommend phpMailer it even has an autoset up build in with great examples on how to configure your server.
Next before you install php mailer read your host servers fine print most of them have strict rules about mail (meaning you have to keep a confirmation they wanted the email) if they let you send mail at all. They do this to keep their servers off of spam list.
Good Luck

Related

DokuWiki on Windows wont send email

I set up DokuWiki on a Windows 2012 Server using wampserver
It works really well, but I can't get it to see any smtp server. I set up a local server using IIS, tested it using blat. I added the following lines to the php.ini:
SMTP = localhost
smtp_port = 25
sendmail_from address#host.com
I also tried using the computer's domain as the server, but Doku won't send any email. Looking at Doku's wiki, I found these helpful instructions: dokuwiki email, but I always get an error that says "Looks like there was an error on sending the password mail. Please contact the admin!"
I also tried the 'fake sendmail', but it gave me the same result.
I reset Apache and IIS after changing the configs, but there was no change. There is nothing in the log files either.
As far as I can tell, this should work. Is there another config file or something else that I missed?
Thanks,
Well, just pointing PHP to localhost for a mail server won't work unless you run a mailserver there.
You have three options:
configure your php.ini to point to a mail server on your LAN
run a local Mailserver (eg. http://www.pendriveapps.com/portable-smtp-server-mini-relay/)
use the swiftmail plugin (https://www.dokuwiki.org/plugin:swiftmail) to configure DokuWiki to use some other external mailserver (eg. gMail).

Failed to connect to mailserver

I have an error while sending e-mail through a php script. Although I changed all the required settings in php.ini like
SMTP "localhost" PHP_INI_ALL
smtp_port "25" PHP_INI_ALL
sendmail_from NULL PHP_INI_ALL
sendmail_path NULL PHP_INI_SYSTEM
I am using wamp. The received error is this:
[function.mail]: Failed to connect to mailserver at "PHP_INI_ALL" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\mail.php on line 10
Why does this error occur ?
WAMP runs on Windows, and windows does not have a Mail Server installed by default.
I would suggest hMailer as I use it myself, but it is not exactly childs play to setup.
Alternatively you could use phpMailer which is a php based utility that will help you send mail using for example a yahoo/gmail etc account.
Wampp doesn't come with a default mail server. You have to install one yourself.
If you only need a mailserver for development purposes you can download the 'smtp4dev' from here: http://smtp4dev.codeplex.com/
From an answer on SO (https://stackoverflow.com/a/7011373/1379394)
t's a beautiful little piece of software that sits in your task bar
and lets you see all email that is being sent to it. It doesn't
actually send email anywhere, so you can work with live data without
fear of spamming someone.
Then, when you want your application to actually send email (when you
run it on the server), you will need an SMTP server address instead of
"localhost". If you don't know which SMTP to use, speak to your
network administrator or ISP.
Hope that will help you.

How to send an email from PHP

I'm trying to send an email from my PHP script but it doesn't work. This is the error I get:
Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and
"smtp_port" setting in php.ini or use ini_set()
So I've tried to change the port and smtp port by using iniset() function, may i don't know is it possible or not.
If you are on linux you must have a mailserver installed i.e. postfix to do so, issue this command apt-get install postfix and after this the server is started and you can use the php mail() function to send emails!
You'll need to setup a mail server on your localhost. Or, you could connect to an external mail server. Hell, even Gmail allows you to connect via SMTP (cool for testing email scripts etc).
So I've tried to change the port and smtp port by using iniset() function, may i don't know is it possible or not.
It is. See the manual for mail configuration. Both those entries are marked as PHP_INI_ALL
You can prove this by using iniset and then trying your mail call again. The error message will either go away or change (e.g. to complain that it can't connect to whatever server you've said to use instead of localhost:25).

send mail by using php5

i wish to send form data throw mailto() in php,
but i got an warning msg that "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
C:\xampp\htdocs\
please sugest me that what i have to do for send data to a mail id properly
Instead of using the raw mail() function, with which you'll have to do everything yourself, it would probably be better to learn how to use a component such as swift mailer.
It might take a bit of time to go through the documentation, but it provides a lot a useful features that you'll be able to re-use accross different projects (like HTML, attached documents, mailling via a remote SMTP server, ...)
Note : there are several great mail components available -- swift is one of them, which is sued in Frameworks such as Symfony, and, as such, should be well-supported.
As it seems that you are on windows the most easy way is to seman mail trough a smtp server.
For that you can use the mail class from Pear -> http://pear.php.net/package/Mail
PHP needs a mail server to deliver messages. In your php.ini file you'll find this directive:
[mail function]
; For Win32 only.
SMTP = smtp.example.com
smtp_port = 25
; For Win32 only.
sendmail_from = webmaster#example.com
Edit the file and fill the values with your e-mail provider information.

Why does this PHP error reference localhost?

I'm running XAMPP on my local machine and on a server in the office. Both are Windows machines.
I'm writing some code that uses mail() to send email from a form. By default, it uses sendmail.exe (which comes with XAMPP) to send the email. In all cases, the mail is actually sent via a third machine, which is the Exchange server.
From my local machine, PHP can send mail just fine. On the server, upon form submission I get 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
... followed by my filename.
I don't understand why it's referencing "localhost." Nowhere in php.ini or sendmail.ini does is "localhost" used - I use the name of the mail server. The SMTP information used on both machines is the same.
As far as I can tell, the two environments have everything important in common:
The php.ini files are identical
The sendmail.ini files are identical
Both machines have the same version of XAMPP installed
The same batch script will run on both machines and successfully send email via sendmail.exe
I have stopped and started Apache several times to make sure it's using the updated config files.
When I get the error above, I notice that no log file is produced by sendmail.exe, which makes me think it's never run.
What am I missing?
Solved
My problem was that I thought it was using c:\xampp\php\php.ini, but it was actually using c:\xampp\apache\bin\php.ini. This should have been obvious, and I had previously edited the correct file on my local machine, but somehow I got confused when making the changes on the server.
Using php_info() showed me which config file was loaded, and I edited the correct one. It's working now! Thanks everyone for your help.
You should add a call to phpinfo() in your page, and check that:
Your PHP script is using the correct php.ini
Check that the SMTP ini settings (as displayed in the phpinfo tables) are correct.
Try to use this in the code on server:
ini_set("SMTP","smtp.example.com" );
ini_set('sendmail_from', 'user#example.com');
I had to do this also - you need to sent up the sendmail.ini:
Your sendmail.ini should be located in C:\xampp\sendmail\sendmail.ini.
You only need to be concern with 3 variables here:
1.smtp_server
2.auth_username
3.auth_password
Details are here: Send mail and xampp
Bill H

Categories