有人知道你是否可以配置php的mail()命令,所以它只会使用SMTP服务器而不是本地sendmail?我们无法将电子邮件标记为垃圾邮件。
我们的服务器正在运行RedHat 5 Enterprise。
我知道各种PHP库充当SMTP客户端,但我宁愿配置PHP,所以mail()直接使用SMTP服务器。
答案 0 :(得分:1)
根据this manual page,只能在Windows上使用。
答案 1 :(得分:0)
检查以下链接:
示例:
更新:您可以使用它,但它会在每个被调用的mail()函数上打开和关闭SMTP套接字。
<?php
$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
答案 2 :(得分:0)
不,原因是所有Linux / Unix系统都应该有一个“sendmail”工具。这样做的好处是,这个外部工具可以处理超时或无响应的SMTP服务器,因此更有可能真正发送邮件。 Windows的SMTP客户端实现是一种解决方案,因为那里不存在“sendmail”。
我的方法是使用与sendmail兼容的工具,该工具只使用SMTP与另一台服务器通信。一个简单的工具是ssmtp(来源可用here)
答案 3 :(得分:0)
只需配置本地sendmail即可将上游邮件服务器用作中继!这样,您就不必在PHP端更改任何。
使用SMTP直接从PHP发送邮件不是一个好主意,因为你会丢失从错误处理到排队的所有内容!
答案 4 :(得分:0)
您可以使用PEAR Mail包直接通过SMTP发送。您还需要安装Net_SMTP才能使SMTP邮件正常工作。在许多服务器上,默认安装这些服务器。您也可以在本地下载这些库的副本,并将它们上传到您站点的目录或包含路径。这不是一个理想的解决方案,但它是有效的。
如果您正在寻找旧版mail()
函数的替代品,但是通过SMTP而不是PHP默认值发送,则需要编写一个转换器函数来设置所有参数。正确的秩序等。这里有一个这样的脚本示例 - 显然你必须修改它以匹配你想要的设置:http://tltech.com/info/php-mail-via-smtp/