1

我们有一份客户问卷,我们通过电子邮件链接发送给我们的客户。问卷的链接(安全网络表单)以纯文本电子邮件(编码:UTF-8)发送给每个客户,其中包含与表单的唯一链接:

https://www.domain.com/form/xxxxxxxxxxxxxxxxxxxxxxx

其中标识符xxxxxxxxxxxxxxxxxxx由字符组合组成abcdefghijkmnopqrstuvwyxz-_23456789- 应该是我知道的有效 URI 字符(未保留)(参见https://www.rfc-editor.org/rfc/rfc3986#section-2.3以供参考)。

问题是显然相当多的收件人无法成功访问该链接,它似乎有些混乱(不应该涉及换行)。他们进入了我们正在使用的站点中的 404 页面,但没有登录以按要求回答问卷。

有没有我们预见到的发送链接的最佳实践?任何建议如何使大多数用户可以访问链接?

更新

我现在已经设置了日志记录(以前没有以一种好的方式存在)并-_从使用的标识符字符中删除,并将尝试做一些进一步的调试,看看你建议的答案是否有帮助。其他答案/评论表示赞赏!

4

3 回答 3

1

在我参与的一个项目中,我们决定使用 PHP (5.4.0+) 函数哈希来创建唯一 ID 以验证用户邮件地址。

使用 $salt 作为随机字符生成散列,使用 $user_mail 创建唯一 ID:

        $salt = '~Z!@#$%I^&*()_-+Q=}]{[\|"><';
        $unique_ID = hash('sha256', $user_mail . $salt);

您将获得一个 64 位字符串,例如:

2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730 

该字符串没有特殊字符,因此链接不会在某些邮件/SO 客户端中中断。(请参阅这篇关于“如何防止 Mac OS X 邮件破坏电子邮件中的链接”的文章)

请记住在创建 unique_id 之前检查数据库中是否存在 $user_mail。

于 2013-09-09T14:09:11.477 回答
1

如果您使用破折号 ( -) 字符,并且链接足够长,那么我知道很多电子邮件客户端会使用它来打破这一点。之后,当他们将看起来像链接的文本转换为可点击的链接时,他们只会使用第一部分。

我的解决方案是避免使用破折号字符,它确实有助于解决问题,但我不是 100%,这是这里唯一起作用的东西。

于 2013-09-09T13:57:04.183 回答
1

听起来可能是编码问题。您是否能够记录进入 Web 服务器的请求?

那是您可能对问题的根源有更好的了解。

于 2013-09-09T13:58:33.103 回答