在最近的一次更新中,似乎不允许使用包含“+”来表示新电子邮件的相同电子邮件进行新注册。我的系统高度依赖它。如何再次启用它?
例如,如果我已经使用 email@gmail.com 注册,则无法使用 email+1@gmail.com 注册。
顺便说一句,我正在使用 REST API 进行测试。
另外,我没有选中此选项:
在最近的一次更新中,似乎不允许使用包含“+”来表示新电子邮件的相同电子邮件进行新注册。我的系统高度依赖它。如何再次启用它?
例如,如果我已经使用 email@gmail.com 注册,则无法使用 email+1@gmail.com 注册。
顺便说一句,我正在使用 REST API 进行测试。
另外,我没有选中此选项:
是的,它对我来说已经禁用了
是的,普通用户界面没问题。REST API有问题。
我做了完全相同的事情,并且无法在最新的实时代码上复制该问题 - 当禁用 normalize emails 设置时,它的行为符合预期:
你能否在 rails 控制台中显示这些命令的输出:
[1] pry(main)> SiteSetting.normalize_emails
[2] pry(main)> User.find_by_email('YOURUSERNAME@gmail.com').username
[3] pry(main)> User.find_by_email('YOURUSERNAME+1@gmail.com').username
另外,你使用的是哪个版本的 Discourse?
我可能还会再次检查你是否正在访问你的生产站点而不是测试站点(反之亦然)。
这些翻译成什么?
(你能把它们复制/粘贴在这里吗)
我应该先问这个 ![]()
嗯……
看来标准化的电子邮件被阻止了。![]()
我的意思是,如果 email@gmail.com 被阻止了,那么 email+1@gmail.com 也会被阻止。当我没有选择标准化电子邮件选项时,这对我来说很奇怪。
这就是为什么我应该先问,而不是假设它“已经被占用”了🤣
您在电子邮件和用户类别中覆盖了哪些设置?
您是否阻止了该电子邮件地址,或者,比如说,阻止了 Gmail 域名?
我不明白。我应该在哪里检查?
是的,我可以看到已阻止了规范化电子邮件。
在这种情况下,我们几乎肯定会阻止被阻止地址的子地址,无论设置如何,因为标准化选项不是默认选项,这是一种反滥用措施。
在设置中选择“仅显示已覆盖”。但现在我怀疑我们不必担心这个问题。
回到我的办公桌,我查看了实际执行此拒绝的代码:
在顶部,我们正在检查规范化电子邮件是否在阻止列表中:
def self.canonical(email)
name, domain = email.split("@", 2)
name = name.gsub(/\+.*/, "")
name = name.gsub(".", "") if %w[gmail.com googlemail.com].include?(domain.downcase)
"#{name}@#{domain}".downcase
end
即使那没有捕获它,它也会被这里的 Levenshtein 距离 检查捕获:
[1] pry(main)> ScreenedEmail.levenshtein('fakezabanshenas@gmail.com', 'fakezabanshenas+1@gmail.com')
=> 2
因为 SiteSetting.levenshtein_distance_spammer_emails 的默认值是 2。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.