我正在使用PHP mail()
函数从联系表单发送电子邮件。函数返回true
所以应该没问题。但是我没有收到电子邮件。
我发过帖子说你应该总是使用PHP邮件中的 From 和 Reply-To 标题来确保它已经发送。我尝试了各种配置,但还没有任何工作。
还有其他方法可以调试mail()
函数吗?
答案 0 :(得分:2)
如果您使用的是Windows,则需要安装SMTP服务器。
如果您使用的是Linux,则需要启用sendmail并确保安装的用户帐户有权访问sendmail二进制文件。
询问您的主机您的帐户是否有足够的权限来访问二进制文件。
在此处发布您的代码也可能有所帮助,以防您忽略了错误。
答案 1 :(得分:2)
大多数情况下,这个问题是由于标题引起的,邮件可能会被发送,但是由于标题错误,SMTP服务器可能根本不会发送邮件
我建议您使用PHP的邮件类,例如phpMailer来处理所有标题问题,并且有一个非常好用的界面
欢呼声
答案 2 :(得分:1)
您是从自己的计算机发送邮件吗?您可能没有设置可以在本地域之外访问的SMTP服务器。您也可能被垃圾邮件过滤器阻止,具体取决于您的邮件服务。
如果您是从自己的计算机上执行此操作,请通过向本地邮件帐户发送本地邮件进行测试(如果您使用的是Linux,那就是)。如果您认为这是问题,请安装postfix。
如果您是通过托管服务进行此操作,请检查您的垃圾邮件文件夹。
答案 3 :(得分:1)
我知道它没有具体回答你的问题,但我的建议是使用像swiftmailer而不是mail()这样的东西。它在获取工作和获取邮件方面都更加可靠。
答案 4 :(得分:0)
在Unix系统上,mail()
使用sendmail
,并且有许多原因(权限,配置错误)可能会失败。我不确定PHP是否会检测并报告所有这些。检查sendmail中的任何日志。
答案 5 :(得分:0)
在某些服务器上,您需要显式设置FROM标头,否则不会发送它。
答案 6 :(得分:0)
Goat,如果您正在尝试启用此功能的服务器位于动态外部IP上,那么您就是SOL。大多数邮件服务器现在阻止端口25上的传入连接从动态IP范围。 :(
答案 7 :(得分:0)
是共享主机吗?我知道有些公司会覆盖邮件功能以避免垃圾邮件,并需要额外的参数或一些预定义的值(例如,from字段必须是您域名中的有效地址)。您可能需要咨询您的网络托管公司。您是否有私人设置可以尝试相同的代码?
答案 8 :(得分:0)
您的提供商的邮件服务器可能会被禁止。检查dns黑名单或联系您的托管服务提供商。