Может быть, это глупый вопрос, но я не могу найти причину, почему функция php mail не работает. У меня есть сервер nginx на debian squeeze, я недавно перешел к нему. Я пробовал простое выполнение почты, но он возвращает false.
if(mail('test@email.com', 'test-subject', 'test-text-blablabla')) echo 'ok'; else echo 'bad';
Что я могу с ним сделать?
Благодарю.
мой раздел почты 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 = me@example.com ; 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 =
Хорошо, я сделал это. Как я сделал это для debian squeeze с сервером nginx: (все команды, которые я выполняю от пользователя root)
Прежде всего вам необходимо установить sendmail
apt-get install sendmail
Затем вы должны настроить этот файл, который был проще, чем я думал
sendmailconfig
хорошо, следующий шаг, который я делал, это конфигурация php.ini (я не отличный администратор, я новичок, поэтому я не знаю, нужно это или нет).
Я установил
sendmail_path= /usr/sbin/sendmail -t -i
Хорошо, с этого момента, теоретически, вы можете отправлять электронную почту, но для моего случая это привело к тайм-ауту шлюза 504 HTTP. Но, как я узнал намного позже, электронная почта уже появилась в почтовом ящике. Итак, мой тестовый php-файл:
<?php mail('myWorkingEmail@example.com', 'test', 'you done that'); echo 'ok'; // I use this to check that script is end the execution ?>
Это довольно ясно.
Следующая проблема – ошибка 504. Я иду в файлы журнала
nano /var/log/mail.log
и здесь я нахожу эту ошибку (это не единственная ошибка, но она отвечает за ошибку 504):
sm-msp-queue[***]: My unqualified host name (myhostname) unknown; sleeping for retry
Затем, чтобы найти, как я могу решить эту проблему: http://forums.fedoraforum.org/archive/index.php/t-85365.html последний комментарий к этой странице.
Или другими словами я сделал это:
nano /etc/hosts
и в этом файле я меняю порядок хостов
127.0.0.1 my_ip localhost myhostname
сохранить, сделать. откройте свой тестовый php-файл, нет никакой ошибки 504, а электронные письма – это доход для отправки по электронной почте в почтовой программе. Как я уже сказал, я новичок, и это может не сработать для вас, но все равно работает для меня. Конечно, это не конечная конфигурация. Надеюсь, вы сочтете это полезным.