可能是一个愚蠢的问题,但我找不到php邮件功能不起作用的原因 我有一个关于debian squeeze的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 =
答案 0 :(得分:24)
好的,我做到了。我如何使用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错误和电子邮件是你在邮件功能中提到的电子邮件的收入。 正如我所说的,我是一个新手,这可能不适合你,但无论如何它对我有用。当然,这不是最终配置。希望你觉得它有用。