邮件()在新服务器上不起作用

可能是一个愚蠢的问题,但我找不到为什么PHP邮件function不起作用我有一个Debian挤压Nginx服务器,我最近搬到它。 我尝试了简单的邮件执行,但它返回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 = 

好吧,我做到了。 我如何使用nginx服务器来压缩debian:(我从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错误和电子邮件收入电子邮件你提到的邮件功能。 正如我所说,我是一个新手,这可能不适合你,但它对我来说无论如何。 当然,这不是最终的配置。 希望你觉得有帮助。