为什么mail()PHP函数不能与WAMP默认安装一起使用?

时间:2010-08-05 05:45:01

标签: php email wamp sendmail

我有WAMP Server 2.0的默认安装。

我正在尝试使用这个简单的脚本发送电子邮件:

<?php

if (mail('my_email@gmail.com', 'My Title', 'Some Text')) {
    echo "OK";
} else {
    echo "Why ??";
}

?>

不幸的是,我收到以下警告:

警告:mail()[function.mail]:无法连接到“localhost”端口25的邮件服务器,验证php.ini中的“SMTP”和“smtp_port”设置或使用C中的ini_set() :第3行:\ My_Path \ send_email.php 为什么??

可能是什么原因?

我希望发送电子邮件是一项非常简单的任务...... :(

3 个答案:

答案 0 :(得分:6)

为了能够发送电子邮件,您需要一个外发电子邮件服务器(MTA)。在大多数Linux系统中,默认存在一个,PHP将通过向sendmail提交邮件来使用它,这是一个Linux应用程序/别名,用于向您安装的任何MTA提交邮件。

默认情况下,Windows不包含MTA。在Windows中,为了能够从PHP发送邮件,您需要访问某些外发电子邮件服务器并告诉PHP它的地址和端口。这是在php.ini中使用SMTPsmtp_port设置完成的。端口localhost上的默认值为25。除非您自己在该计算机上设置了邮件服务器,否则将失败。

例如,如果您的ISP为您提供外发邮件服务器,您可以使用其地址和端口号。或者,如果您认真发送邮件,则可以在本地计算机或本地网络中的某个位置设置自己的邮件服务器。

答案 1 :(得分:1)

简答:没有为本地计算机(localhost)配置SMTP服务器。 Windows不附带内置的SMTP服务器,随时可以开箱即用。您可以通过其他主机(使用SMTP php.ini指令)中继邮件 - 但是您很少会找到测试环境邮件的开放中继。

您可以使用PHPMailer这样的脚本,而不是使用mail(),它可以通过正确的身份验证直接连接到您的外发电子邮件服务器。这是quick snippet for Gmail(虽然不完整)和full example

答案 2 :(得分:0)

您可以使用“假发送邮件”:http://glob.com.au/sendmail/

所以你的测试机器上不需要smtp服务器,你只需要在php.ini中设置程序的路径

侨!   斯蒂芬