CakePHP:email-validate操作不';单击电子邮件链接时无法工作

CakePHP:email-validate操作不';单击电子邮件链接时无法工作,email,cakephp,Email,Cakephp,我们已经创建了网站的电子邮件验证部分。我们使用CakePHP BTW构建了这个站点 问题是,当我们点击电子邮件中的链接时,它不起作用。电子邮件以纯文本形式发送 奇怪的是,当我们把链接粘贴到地址栏上时,它就起作用了。此外,当使用Gmail和桌面电子邮件客户端点击链接时,它也能正常工作。其他电子邮件提供商不工作 编辑: 其他信息: 验证的示例链接: 当它工作时,它应该登录用户并重定向到用户仪表板 当它不工作时,它会出现在头版(见上面的描述) 附加信息2: 我确实比较了使用Live HTTP头的结果,

我们已经创建了网站的电子邮件验证部分。我们使用CakePHP BTW构建了这个站点

问题是,当我们点击电子邮件中的链接时,它不起作用。电子邮件以纯文本形式发送

奇怪的是,当我们把链接粘贴到地址栏上时,它就起作用了。此外,当使用Gmail和桌面电子邮件客户端点击链接时,它也能正常工作。其他电子邮件提供商不工作

编辑:

其他信息:

验证的示例链接:

当它工作时,它应该登录用户并重定向到用户仪表板

当它不工作时,它会出现在头版(见上面的描述)

附加信息2:


我确实比较了使用Live HTTP头的结果,我发现它唯一没有通过的时候(出于某种原因进入登录页面)是当有一个“Referer:…”Gmail由于某种原因在它的头中没有一个“Referer”行时。

仍然是一个非常模糊的问题,但这里有:

  • 链接正常,您已经通过复制和粘贴验证了它的有效性
  • 当你在一些电子邮件客户端中点击它时,它就会工作
  • 因此,再一次,链接是好的
这就造成了在某些电子邮件客户端中无法单击它的情况。由于您自己没有链接文本,而是以纯文本发送,因此电子邮件客户端会自动进行链接。URL中可能存在使电子邮件客户端无法使用的字符:

http://example.com/users/validate/1j423-k1j234-nc183&$+-123894
-----------------------------------------------------
所有奇怪的字符可能都是URL的一部分,但电子邮件客户端会感到困惑,认为
$
字符后面的部分不再属于URL,只链接到该部分。因此,单击时,链接将不同,并且可能无效。解决方案:使用更简单的字符或它们


也许这也只是因为链接被换行,这破坏了自动链接。在这种情况下,请重新布局电子邮件或使用较短的URL。

这听起来可能很愚蠢,但您是否使用了Auth组件,并在允许的操作上添加了
验证
操作

您应该有
$this->Auth->allow(数组('validate')beforeFilter
on
userscocontroller


我的一个朋友也有同样的问题。他正在浏览器上测试它,在那里他通过了身份验证,当然它会工作的。但是在不同的浏览器上测试时,它将他重定向到登录页面。

您需要提供更多的细节。。。什么链接,它应该做什么,它不做什么?验证代码是md5/sha1+盐散列。使用散列中的字符仍然会使链接无效吗?链接不一定无效,它可能只是出于某种原因使电子邮件客户端出错。如果没有更多的细节,就很难给出更好的答案。好吧,浏览器发送请求时并不关心链接的来源(单击或粘贴)。你确定你有一个没有被电子邮件客户端截断的有效链接(如deceze所述)?如果你在应用程序中输入了一个无效的URL,你可能会让它重定向到主页,这就是你看到这种行为的原因。尝试使用FF plugin Live HTTP headers查看您发出的实际原始请求,查看deceze对于不包含“无效”字符的电子邮件客户端是否正确。或者简单地说,不要单击电子邮件客户端中的链接,而是右击该链接并选择复制链接(大多数电子邮件客户端/浏览器都有该选项),然后将它与纯文本链接进行比较。我确实使用Live HTTP头比较了结果,我发现它唯一无法通过(出于某种原因进入登录页面)的时间是当有“Referer:…”Gmail出于某种原因在头中没有“Referer”行时。