2011-05-09 98 views
0

我正在使用MAMP在家中的计算机上构建网站。我使用的代码使用PHP mail()函数发送电子邮件,但每当我测试它时,邮件都不会发送。PHP邮件()无法正常工作

我的电脑连接到网络,但我想知道是否有关于本地托管的东西,防止邮件发送。我没有收到任何类型的错误消息。

任何想法?

+2

mail()函数像OSX系统一样对待OSX。你需要一个本地邮件服务器来工作(postfix/sendmail/etc。) – mario 2011-05-09 00:19:41

+0

@mario我们需要一个*关闭评论作为答案*按钮:) – alex 2011-05-09 00:23:55

+0

[将smtp端口从25更改为587?](http:/ /堆栈溢出。com/questions/5913149/change-smtp-port-from-25-to-587) – 2011-05-09 00:26:34

回答

1

PHP可以通过两种方式之一发送邮件。

  1. 第一个和非Windows系统上的默认设置是使用系统上安装的本地邮件传输代理。这将是“sendmail”或与它兼容的应用程序,最流行的可能是后缀。

  2. 另一种是通过SMTP连接到某些邮件服务器。

你要么需要在本地系统上安装一个邮件传输代理(并正确设置它),或编辑PHP的配置指定了一个SMTP服务器地址和端口。

+0

是的 - 服务器的我的工作与运行后缀库 - 你需要一些库来处理这个功能。 – Atticus 2011-05-09 00:47:39

0

您需要设置SMTP服务器,以便能够使用mail功能,或者您可以使用PHPMailer class,有了它,你能避免使用邮件功能和设置问题,PHPMailler才能正常工作要加载需要插槽扩展。

0

是的,有些东西可能会阻止本地托管的邮件。首先,您的ISP可能会阻止SMTP到ISP以外的其他服务器。请问你的ISP支持是否阻止了SMTP ......或者尝试用电报来传送某人的MX端口25,你会得到回应吗?

如果您的ISP阻止smtp,您仍可以发送邮件,但首先您必须通过托管电子邮件服务器(如ISP邮件服务器)转发该电子邮件。这个过程称为“智能托管”,您可以搜索更多信息。

即使您没有被阻止在25号端口,许多网站也会拒绝或丢失源自动态或住宅IP地址的smtp流量,因此再次提出了智能主机的建议。

此外,我建议不要在PHP中使用内置的mail()函数...使用替换和改进它的东西,如http://pear.php.net/package/Mailhttp://sourceforge.net/projects/phpmailer/。再次,使用SMTP方法,因为它比直接发送或调用Sendmail更可靠。

确认这个问题非常重要,通过telnet手动执行SMTP。这样你就可以从PHP中分离出问题。我做了多年的ISP支持,看到了很多问题。大多数人都正确地设置了php和邮件,但却陷入了与SMTP有关的后台网络问题。

如果您安装了Wireshark,它可以记录网络流量,并且您可能会看到实际的SMTP流量,例如远程服务器可能拒绝您的连接。 Wireshark很有帮助,但不是必须解决这个问题。祝你好运。