我使用加密电子邮件通过邮件向用户发送邀请,以了解哪个用户响应了邀请。就像是:
Hello, click on this link to start learning: https://example.org/start-learning?e=fwTreaN0WybffXdDfZZUNYB3FTFfZObCb7QFF5C4AFJvTjXabIPtRfcoXLkFYMUvD4FIZsmrDdEFN2OPKcTrAOSQLZfuKdfwcic1WtBxWSXWR1GEJD6we213A3BEPBpca0BxaaQ4GGMPFeRyXp6fPrG9WnTgWogwXUcnVtdwSEEdNHGuZsClTxR2AtD2JZN8VAEsRQKpFFShEDR2SET4KxGhLGM3M0FdDelrJtO8KXS2YRaddH==
加密的电子邮件是上面的长字符串。我在Mailable
课堂上像这样对邮件进行编码:
$url = 'https://example.org/start-learning?e=' . encrypt($this->to[0]['address']);
然后将$url
其添加到这样的邮件模板中:
<a href="{{$url}}>click me<a>
然后,当用户单击链接时,它会路由到控制器,控制器会解密有效负载:
decrypt($request->input('e'));
然后,它适用于大约 99% 的点击链接的人。但是对于大约百分之一,它不起作用,我在解密时出错。我不知道为什么。这是加密和解密的同一个 Laravel 应用程序。这种奇怪的行为有原因吗?
旁注:我知道解密总是有效并且没有随机行为(顺便说一句,我在 10000 个条目上对其进行了测试,没关系)。我不明白的邮件过程肯定有其他问题。