使用PHP邮件通过SMTP发送

3

有人知道如何配置php的mail()命令,使其仅使用SMTP服务器而不是本地sendmail吗?我们遇到了电子邮件被标记为垃圾邮件的问题。

我们的服务器正在运行RedHat 5 Enterprise。

我知道有各种PHP库充当SMTP客户端,但我更愿意配置PHP,使mail()直接使用SMTP服务器。

5个回答

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);
?>

他正在询问有关本地mail()的方法。 - Pekka
安装 PEAR Mail 包。 - Orson
是的,为了确认,我需要让mail()函数工作,否则我们就得重写一大堆PHP文件! - Kevin Sedgley
我已经提供了更新。如果您可以在索引页面中包含外部库,那么您可以使用先前的示例,这将向您的应用程序中的每个其他PHP脚本级联。然后,您只需要将“mail”更改为“$smtp->send”。还要注意函数参数。 - Orson

0

您可以使用 PEAR Mail 包直接通过 SMTP 发送邮件。 您还需要安装 Net_SMTP 以使 SMTP 邮件正常工作。 在许多服务器上,默认已安装这些内容。 您还可以将这些库的副本下载到本地,然后上传到站点目录或包含路径中。 这不是理想的解决方案,但它是有效的。

如果您正在寻找旧的 mail() 函数的替代品,而该函数将通过 SMTP 而不是 PHP 默认发送,则需要编写一个转换器函数,以正确设置所有参数等。 这里有一个脚本示例,它就是这样的 - 显然,您需要修改它以匹配您想要的设置:http://tltech.com/info/php-mail-via-smtp/


0
不,原因是所有的Linux/Unix系统都应该有一个"sendmail"工具。好处在于这个外部工具可以处理超时或无响应的SMTP服务器,这样邮件就更有可能真正被发送了。Windows的SMTP客户端实现是为了解决"sendmail"在那里不存在的问题。
我的方法是使用一个兼容sendmail的工具,它只是使用SMTP与另一个服务器通信。一个简单的工具是ssmtp(源代码可在这里找到)。

0

只需配置本地sendmail以使用上游邮件服务器作为中继!这样,您就不必在PHP端更改任何内容。

直接从PHP使用SMTP发送邮件并不是一个好主意,因为这样会失去从错误处理到排队的所有内容!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接