我一直在尝试发送电子邮件进行注册,邀请等。
在本地开发中,电子邮件会被发送。但是,一旦在服务器上没有邮件到达。
我安装了postfix。我试图设置一个邮件服务器,但放弃了。所以目前,如果我输入终端
peter# mail example@example.com
电子邮件到了。但是,这不会发送电子邮件:
$res = mail('example@example.com', 'subj', 'bodddd');
不仅如此,而且回复$res
也没有任何效果。既不true
也不false
。
我该怎样做才能让它发挥作用?
感谢名单
答案 0 :(得分:18)
根据您上面的评论,看起来您的sendmail路径错误或在您的php.ini中注释掉了。它应该是这样的:
sendmail_path = /usr/sbin/sendmail -t -i
如果您不确定您的sendmail二进制文件所在的位置,可以使用以下命令找到它:
whereis sendmail
答案 1 :(得分:3)
在共享托管上对我有用的解决方案是使用-f
函数中的mail
附加参数。而不是......
mail($to, $subject, $body, $headers);
我不得不使用......
mail($to, $subject, $body, $headers, " -fvaliduser@validdomain.com");
根据the php manual,附加参数作为sendmail的附加参数提供。请注意,-f
与电子邮件之间缺少空间似乎是有意的。
在我的情况下,在一个特定的主机上,我无法访问postfix / sendmail日志。原始命令返回true,并且cpanel日志显示它已被接受传递,但收件人从未收到它。