我在Linux网络托管包上创建了一个PHP网站。通常我会收到由PHP Mail()函数生成的联系表单发送的电子邮件。但这一次,对我来说这是一个奇怪的案例 我的客户公司有一个邮件服务器。如果我通过Gmail上的个人电子邮件发送电子邮件,他们将在他们的邮件服务器上获取。但是当我通过联系表格发送电子邮件时,电子邮件会在网站托管包上发送到webmail 我已删除此主机上的所有电子邮件帐户,我也从中删除了DNS MX记录,但仍然无法接收公司邮件服务器帐户上的联系表单发送的电子邮件。
我该如何解决这个问题?
答案 0 :(得分:1)
从你的问题来看,webshoting提供商也是你的电子邮件托管服务提供商。您解释问题的方式使我得出结论,您的PHP脚本使用mail()函数,该函数将在内部调用MTA(如sendmail)来发送电子邮件。
现在看来,PHP正在通过mail()函数发送邮件,该函数将邮件传递给检查本地配置的本地MTA(如sendmail)。在本地配置中,它似乎将收件人域视为本地域,并将邮件本地传递给用户。在这种情况下,电子邮件甚至没有离开webhoster的服务器。
由于这不是您所期望的,如果您对MTA的配置没有影响(我认为您没有),则有2种可能性。
我建议(如果可能的话)不使用mail()函数。有准备使用SMTP类,它将连接到您的Coice的SMTP服务器以发送电子邮件。这样你就可以避免这个问题。您应该在PHP Classes Repository。
如果可能,请将电子邮件发送到其他域。这样,MTA必须检查DNS并将电子邮件发送到另一个SMTP服务器以进行传递。
答案 1 :(得分:0)
首先要确定的是如何发送电子邮件(sendmail或SMTP)。然后,您的电子邮件是否a)根本不发送或b)被目标邮件服务器拒绝。
我会检查所有可用的日志(源和目标邮件服务器和守护进程)。看看mail()本身是否有错误。尝试直接使用sendmail / smtp。
如果目标服务器根据其垃圾邮件分数拒绝邮件,请尝试设置SPF records以使网络服务器能够合法地发送邮件。
答案 2 :(得分:0)
如果您的电子邮件功能“mail($ to,$ subject,$ message)”无效,则需要检查服务器配置。现在它是否启用。
有关详细信息,请参见此处:https://wycks.wordpress.com/2013/10/09/when-phps-mail-function-doesnt-work/