CakePHP:单击电子邮件链接时,电子邮件验证操作不起作用

时间:2010-01-20 07:47:47

标签: email cakephp

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

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

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

编辑:

其他信息:

验证的示例链接:http://localhost/users/validate/validatecodeblah12c023

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

当它不工作时会进入首页(参见上面的说明)。

其他信息2:

我确实比较了使用Live HTTP标头的结果,并且我发现它唯一没有推送的时间(由于某种原因进入登录页面)就是有一个'Referrer:http://mail.yahooblahblah .. “由于某些原因,Gmail在其标题中没有'Referer'行。

2 个答案:

答案 0 :(得分:0)

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

  • 链接没问题,您已经通过复制和粘贴验证了它的工作原理
  • 当您在某些电子邮件客户端中单击它时,它可以正常工作
  • ergo,再次,链接没问题

这样就可以在某些电子邮件客户端中单击它。由于您没有自己链接文本但是以纯文本形式发送,因此电子邮件客户端会自动进行链接。 URL中可能存在关闭电子邮件客户端的字符:

http://example.com/users/validate/1j423-k1j234-nc183&$+-123894
-----------------------------------------------------

所有奇怪的字符都可能是URL的一部分,但电子邮件客户端会感到困惑,并认为$字符后面的部分不再属于该URL,只链接到该部分。因此,当点击时,链接将是不同的,可能无效。解决方案:使用更简单的字符或urlencode

也许它也只是链接被换行,这打破了自动链接。在这种情况下,请重新布置电子邮件或使用较短的网址。

答案 1 :(得分:0)

这可能听起来很愚蠢,但您使用的是Auth组件并且已对您允许的操作添加了validate操作吗?

$this->Auth->allow(array('validate')); beforeFilter上的UsersController应该{{1}}

我的一个朋友遇到了同样的问题。他正在浏览器上对其进行身份验证,当然它可以正常运行。但是在不同的浏览器上进行测试,它会将他重定向到登录页面。