php网站邮件表格没有到达交换服务器收件人 -

时间:2013-09-13 20:29:20

标签: php forms email exchange-server

我选择了这个脚本,因为它有一个CAPTCHA和文件上传/附件。 http://www.html-form-guide.com/contact-form/php-contact-form-tutorial.html/comment-page-2#comments

我知道它已经过时了,脚本编写者不会在他们的网站上支持它。

表格位于HostGator的网址(当然是假的,只是使用它)“abcinc.com”。公司/网站所有者在Exchange Server 2013上发送电子邮件,并使用“abc.com”作为邮件。

表单创建的电子邮件 - 我在Google / Gmail帐户中收到该电子邮件。我已经在这个服务器上使用了这个脚本,可以让其他六个人(不同的网站组织)接收它们(使用Google / Gmail,Hostgator邮件)。

此客户端无法通过“abc.com”在其Exchange Server(2013)上接收这些电子邮件(是的,我的表单中的电子邮件地址正确无误)。

我只是想学点东西。这就是我在这里的原因。我不是一个php程序员,我不是一个cPanel,Exchange Server或任何类型的邮件/服务器demi-god。我所知道的是我选择了一个脚本并对其进行了修改,在HostGator上进行了托管,并且相信当使用表格时HostGator发送的邮件是电子邮件地址的形式。

Exchange技术支持人员给我写了这个:

  

我需要知道您用来发送电子邮件的SMTP服务以及是否   您可以使用ABC.com的真实电子邮件地址   从表单发送电子邮件。

     

请查看下面的文章并尝试镜像设置   尽你所能。另外,请给我们一个实际的电子邮件地址   如果可能,abcinc.com发送电子邮件。我可以为它创建一个新的   如果您愿意,您或您可以使用现有的。你做完之后   这些更改或如果您有任何疑问,请与我联系   我们可以做最后的测试。

     

这是一个包含通常用于网络的所有设置的KB   应用程序和其他设备能够使用我们的服务器发送   如果Web应用程序正在执行发送部分,请查看是否   有可能显示的任何日志       如何配置您的打印机,扫描仪,复印机,Web脚本或SMTP应用程序以使用Exchange帐户   http://hosting.intermedia.net/support/kb/viewKBArticle.asp?id=2167
  以下是您帐户的具体设置。注意:这是一个   Exchange 2013服务器。

     

(我这里没有包含设置)

因此,在试图通读我的大脑爆炸后。当我恢复时,我登录HostGator支持问他们......难道我不知道我想问他们什么。

他们告诉我给他们我的cPanel IP。

然后我问Exchange Server的人是否可以给我一个他们认识的脚本。是啊,我做了。 : - \

所以我的问题是 - 是什么让Exchange Server不接收这些电子邮件?

大多数情况下,我可以比10分钟前受到更多的教育。

〜凯

PS / EDITED

我回来补充说,我只是尝试了另一种(基本)形式,他们收到了它。

从未访问Exchange Server的表单中,这是标题信息:

To: jill@abc.com
Subject: Contact form submission from Kaye
X-PHP-Script: www.abcinc.com/estimates.php for 76.3.118.189
Date: Fri, 13 Sep 2013 15:37:30 -0500
From: Kaye <nobody@www.abc.com>
Reply-To: kaye@mydomain.com
Message-ID: <be82ada010a752b86440e86e5c24ca0a@www.abcinc.com>
X-Priority: 3
X-Mailer: PHPMailer (phpmailer.sourceforge.net) [version 2.0.4]
MIME-Version: 1.0
Content-Type: multipart/alternative;

在确实有效的表单中,它使用用户在表单中输入的实际电子邮件作为FROM电子邮件地址 - 而不是服务器。这可能是Exchange Server的问题吗?

function GetFromAddress()
{
    if(!empty($this->from_address))
    {
        return $this->from_address;
    }

    $host = $_SERVER['SERVER_NAME'];

    $from ="nobody@$host";
    return $from;
}

1 个答案:

答案 0 :(得分:2)

大多数托管Exchange提供商都包含过滤器,用于检查与发件人地址关联的域的SPF记录或MX记录。由于www。[your-domain] .com(因为“www。”)很可能既没有SPF也没有MX记录,因此托管的Exchange提供商的SPAM阻止程序将邮件标记为垃圾邮件,因为它无法验证消息来自的IP地址实际上与www。[your-domain] .com-或者(更可能)www。[your-domain] .com没有MX或SPF记录合法关联与之关联,因此服务器假定消息必须是垃圾(因为为什么没有为电子邮件配置的域名是否发送电子邮件?)。 [your-domain] .com可能有这些记录,但不一定涵盖“www”。子域。

我之前根据自己的亲身经历处理了此问题,并发现Google Apps会处理各种托管Exchange提供商不会处理的邮件。有些托管的Exchange提供商甚至不会让您看到被阻止的内容(例如GoDaddy),因此很难进行故障排除。

现在,在您编辑的帖子中,您提到该脚本现在正在发送“来自”用户输入的地址并且这有帮助。你认为这有帮助是正确的。即使发送IP地址与发件人域名不匹配,接收服务器也可能有一个策略来接受没有特定原因的消息(例如黑名单条目或完全缺少域名的MX / SPF记录) ,即使IP与域名不匹配。

这些标题......

From: Kaye <nobody@www.abc.com>
Reply-To: kaye@mydomain.com

...有缺陷,因为接收服务器主要关注“来自”地址。回复地址虽然可能有效,但不会增加邮件的可信度,如果“发件人”地址无效或列入黑名单,邮件服务器将不会花时间查看邮件。

此标题......

Message-ID: <be82ada010a752b86440e86e5c24ca0a@www.abcinc.com>

......无论如何都不会产生任何影响,尽管有“www”。在里面。 Message-ID只需要是唯一的,其他任何事情都不重要。