2010-08-05 43 views
1

我有WAMP Server 2.0的默认安装。为什么mail()PHP函数不适用于WAMP默认安装?

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

<?php 

if (mail('[email protected]', 'My Title', 'Some Text')) { 
    echo "OK"; 
} else { 
    echo "Why ??"; 
} 

?> 

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

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

这可能是什么原因?

我预期发送电子邮件是一个非常简单的任务... :(

+0

编辑main()到mail()。 – Siddiqui 2010-08-05 05:49:59

+2

您需要访问发送邮件服务器才能发送邮件。 mail()函数连接到php.ini文件中配置的服务器(如错误​​消息中所述)并指示它发送消息。我会建议使用googling *发送带有php和gmail *的电子邮件,以获得有关“mail()”和smtp服务器基础的好教程。 – 2010-08-05 05:50:18

回答

6

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

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

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

+0

谢谢,我真的在寻找一个简单易用的Windows解决方案,因为我相信当我把应用程序放在真正的Unix服务器上时,我不会遇到这个问题。那么对Windows来说最简单的解决方案是什么? – 2010-08-05 05:56:39

+0

最简单的方法就是将它指向你的ISP的SMTP服务器,我认为(尽管如果你在测试环境中并且实际上并不希望邮件发送,那么这样做可能不太好)。或者你可以看看这些解决方案:http://stackoverflow.com/questions/30076/need-a-lightweight-free-windows-smtp-server - 看起来像Windows Server也带有它自己的SMTP服务器,你可以安装。 – thomasrutter 2010-08-05 06:03:24

+0

请注意,如果您使用ISP的外发电子邮件服务器并且处于住宅连接状态,则需要遵守可能禁止运行邮件列表的政策,限制可发送的电子邮件数量,要求您从ISP发送的邮件在“发件人”一行中的电子邮件地址等。如果您想发送严重的电子邮件,您可以考虑自己设置SMTP服务器,或者为外部邮件中继付费。 – thomasrutter 2015-11-30 23:24:35

1

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

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

0

您可以使用“假的Sendmail”:http://glob.com.au/sendmail/

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

再见! Stefan

相关问题