mail() doesn't work on new server
Okay, I made it. How I made it for debian squeeze with nginx server: (all commands I execute from root user)
First of all you need to install sendmail
apt-get install sendmail
next, you must configure this file that was easier than I thought
sendmailconfig
okay, next step that I make was a php.ini configuration (I'm not a great admin, I'm a beginner, so I don't know is it necessary or not.)
I set
sendmail_path= /usr/sbin/sendmail -t -i
Okay, from this moment, theoretically, you can send email, but for my case it led to 504 http error gateway time-out. But as I found much later the email already came to email box. So, my test php file is:
<?php
mail('[email protected]', 'test', 'you done that');
echo 'ok'; // I use this to check that script is end the execution
?>
That's pretty clear.
Next problem is 504 error. I go to the log files
nano /var/log/mail.log
and here i find this error (that not the only one error, but that one is responsible for 504 error):
sm-msp-queue[***]: My unqualified host name (myhostname) unknown; sleeping for retry
Then, to find how I can solve this trouble: http://forums.fedoraforum.org/archive/index.php/t-85365.html last comment on that page.
Or another words I made this:
nano /etc/hosts
and in that file I change the order of the hosts
127.0.0.1 my_ip localhost myhostname
save, done. open your test php file, there is no any 504 error and emails is income to email you mention in mail function. As I say, I'm a novice, and that may not work for you, but it work for me anyhow. This is not the end configuration, of course. Hope you find it helpful.
Dima Deplov
Co-founder of pleeq.com and all related projects, including macilove.com blog with self made blog platform engine. Get in touch with me on Twitter @dimadeplov
Updated on July 30, 2022Comments
-
Dima Deplov almost 2 years
May be it's a dumb question, but I can't find the reason why php mail function doesn't work I have a nginx server on debian squeeze, I moved to it recently. I tried simple mail execution but it return false.
if(mail('[email protected]', 'test-subject', 'test-text-blablabla')) echo 'ok'; else echo 'bad';
What can i do with it?
Thanks.
my mail section of php.ini:
[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = [email protected] ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path ;sendmail_path = ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = On ; The path to a log file that will log all mail() calls. Log entries include ; the full path of the script, line number, To address and headers. ;mail.log =