我已经配置我的服务器在“/etc/php5/apache2/php.ini”与sendmail是安装在服务器上设置"sendmail_path = "/usr/sbin/sendmail"
发送邮件。
当我通过CLI运行此脚本,或者它的任何变化,从PHP5邮件发送就好了,但是当我有一个浏览器中运行它,即Chrome或Firefox,它每次失败。
<?php
$to = "[email protected]";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("<p>Message successfully sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
}
?>
我使用了“PHP5-CLI”包一个命令行解释。
依赖于PHP其他基于PHP的web-app的“邮件()”函数没有任何发送邮件。
Apache和CLI的似乎在你的安装使用不同的配置。
在您的Apache的/etc/php5/cli/php.ini
php.ini
比较配置。可能是一些不与Apache的PHP sendmail的配置和CLI配置工作是正确的。
首先,您需要验证当前的设置是你认为它是一个:
var_dump(ini_get('sendmail_path'));
如果它在Web和CLI不同,PHP可能是不同的php.ini文件。运行此:
phpinfo(INFO_GENERAL);
......找到这部分(您的值将与我的不同):
Configuration File (php.ini) Path => C:\Windows
Loaded Configuration File => C:\Program Files\PHP\php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
这将帮助你确定你需要编辑php.ini文件。
(不管结果如何,它的怪异,这个来自错误配置的Linux服务器。)
当您从CLI运行PHP它运行在您登录到Linux帐户。当您从运行Apache运行PHP作为Apache下运行,通常是“没有人”用户
这可能有几个原因邮件从“无人”失败 - 一些垃圾邮件过滤器将拒绝它。
另外,我不知道你是什么意思“失败” - 根本没有收到您所期望并不意味着它没有发送的电子邮件。你应该检查你的邮件日志,通常在/ var /日志/ maillog中,只是从浏览器上运行脚本后检查最新的几行字在日志类型
# tail -20 /var/log/maillog
看看你是否能发现你的电子邮件或者被发送或拒绝。也再次等待一两分钟,然后检查日志 - 原始的电子邮件可能会回来的一些邮件服务器反弹,这将包括它为什么被退回解释