我们已经创建了网站的电子邮件验证部分。我们使用CakePHP BTW构建了该站点。
问题是当我们点击电子邮件中的链接时它不起作用。电子邮件以纯文本形式发送。
奇怪的是,当我们将链接粘贴到地址栏上时,它会起作用。此外,当使用Gmail和桌面电子邮件客户端点击链接时,它也可以正常工作。其他电子邮件提供商不起作用。
编辑:
其他信息:
验证的示例链接:http://localhost/users/validate/validatecodeblah12c023
当它正常工作时,它应该登录用户并重定向到用户仪表板。
当它不工作时会进入首页(参见上面的说明)。
其他信息2:
我确实比较了使用Live HTTP标头的结果,并且我发现它唯一没有推送的时间(由于某种原因进入登录页面)就是有一个'Referrer:http://mail.yahooblahblah .. “由于某些原因,Gmail在其标题中没有'Referer'行。
答案 0 :(得分:0)
仍然是一个非常模糊的问题,但这里有:
这样就可以在某些电子邮件客户端中单击它。由于您没有自己链接文本但是以纯文本形式发送,因此电子邮件客户端会自动进行链接。 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}}
我的一个朋友遇到了同样的问题。他正在浏览器上对其进行身份验证,当然它可以正常运行。但是在不同的浏览器上进行测试,它会将他重定向到登录页面。