有人知道如何配置php的mail()命令,使其仅使用SMTP服务器而不是本地sendmail吗?我们遇到了电子邮件被标记为垃圾邮件的问题。
我们的服务器正在运行RedHat 5 Enterprise。
我知道有各种PHP库充当SMTP客户端,但我更愿意配置PHP,使mail()直接使用SMTP服务器。
请查看以下链接:
示例:
更新:您可以使用此方法,但是每次调用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);
?>
您可以使用 PEAR Mail 包直接通过 SMTP 发送邮件。 您还需要安装 Net_SMTP 以使 SMTP 邮件正常工作。 在许多服务器上,默认已安装这些内容。 您还可以将这些库的副本下载到本地,然后上传到站点目录或包含路径中。 这不是理想的解决方案,但它是有效的。
如果您正在寻找旧的 mail()
函数的替代品,而该函数将通过 SMTP 而不是 PHP 默认发送,则需要编写一个转换器函数,以正确设置所有参数等。 这里有一个脚本示例,它就是这样的 - 显然,您需要修改它以匹配您想要的设置:http://tltech.com/info/php-mail-via-smtp/
只需配置本地sendmail以使用上游邮件服务器作为中继!这样,您就不必在PHP端更改任何内容。
直接从PHP使用SMTP发送邮件并不是一个好主意,因为这样会失去从错误处理到排队的所有内容!