PHP mail()不起作用

时间:2011-05-09 00:14:57

标签: php

我正在使用MAMP在家用电脑上构建一个网站。我正在使用的代码使用PHP mail()函数来发送电子邮件,但每当我测试它时,邮件都不会被发送。

我的电脑已连接到网络,但我想知道是否有关于本地托管的内容会阻止邮件被发送。我没有收到任何错误信息。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

您需要设置SMTP服务器才能使用mail功能,或者您可以使用PHPMailer class,使用它可以避免使用邮件功能和设置问题,PHPMailler需要要加载的套接字扩展,以便正常运行。

答案 2 :(得分:0)

是的,有些东西可以阻止本地托管的邮件。首先,您的ISP可以阻止SMTP到ISP以外的服务器。如果他们阻止SMTP,请询问您的ISP支持...或者尝试电传这样的某人的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虽然有用,但并不是解决这个问题的必要条件。祝你好运。