Django:SendGrid 点击跟踪服务阻止消息框架工作
Django: SendGrid Click Tracking service prevents messages framework from working
我正在尝试使用 SendGrid 作为电子邮件提供商,使用 Django 通过确认电子邮件实现注册,我的 'SignUpActivationView' 代码验证令牌,然后将用户重定向到主页,其中 success/error使用消息框架显示消息:
class SignUpActivationView(RedirectView):
redirect_url = reverse_lazy('link_list')
def dispatch(self, request, *args, **kwargs):
...
# if token is valid:
messages.error(self.request, 'Your account is now active.')
return HttpResponseRedirect(self.redirect_url)
# if token is invalid:
messages.error(self.request, 'Your account could not be activated.')
return HttpResponseRedirect(self.redirect_url)
到目前为止,只要我在浏览器中复制粘贴 link,我的方法就有效,如果我点击它,用户会被激活,但 成功消息不会显示 在我的申请中。我相信这是因为 SendGrid 的点击跟踪服务正在包装我的 link:
我找到的解决方法是通过添加 'clicktracking=off' HTML 属性告诉 SendGrid 不要跟踪 link,缺点是我只能告诉 SendGrid 不要跟踪links 在我的电子邮件的 HTML 版本中。如果用户的电子邮件客户端决定打开电子邮件的纯文本版本,则 link 仍将被包装。
# solution: do not track clicks
# caveat: only works in HTML, not in plain text emails
<a clicktracking=off href="http://foo.bar">Confirmation link</a>
因此 Link 跟踪对于纯文本电子邮件来说是非常必要的。
有什么方法可以使消息框架与 Link 跟踪一起工作吗?
当 SendGrid 跟踪您的 link 时,"click" 转到 SendGrid,returns 一个 302 Found
重定向到您在原始文件中提供的 URL电子邮件,在 SendGrid 跟踪它之前。
因此,只要您在那里提供正确的 link,当 "click" 到达您的服务器时,它会返回到那个位置,并带有适当的令牌。
您可以在 Chrome 的开发人员工具中查看此行为,在 网络 选项卡下,这应该可以帮助您解决此处发生的问题。
此外,您可以在 设置:跟踪设置 部分下禁用所有 SendGrid 的点击跟踪,而不仅仅是 link-by-link .
默认情况下,SendGrid 不跟踪纯文本 links,因为它使它们变得更长。如果您希望它这样做,您必须在相同的设置下主动启用它。现在很少有收件人以纯文本形式查看,因此它对您的参与统计数据的贡献不大,因此通常不建议启用该功能。
我正在尝试使用 SendGrid 作为电子邮件提供商,使用 Django 通过确认电子邮件实现注册,我的 'SignUpActivationView' 代码验证令牌,然后将用户重定向到主页,其中 success/error使用消息框架显示消息:
class SignUpActivationView(RedirectView):
redirect_url = reverse_lazy('link_list')
def dispatch(self, request, *args, **kwargs):
...
# if token is valid:
messages.error(self.request, 'Your account is now active.')
return HttpResponseRedirect(self.redirect_url)
# if token is invalid:
messages.error(self.request, 'Your account could not be activated.')
return HttpResponseRedirect(self.redirect_url)
到目前为止,只要我在浏览器中复制粘贴 link,我的方法就有效,如果我点击它,用户会被激活,但 成功消息不会显示 在我的申请中。我相信这是因为 SendGrid 的点击跟踪服务正在包装我的 link:
我找到的解决方法是通过添加 'clicktracking=off' HTML 属性告诉 SendGrid 不要跟踪 link,缺点是我只能告诉 SendGrid 不要跟踪links 在我的电子邮件的 HTML 版本中。如果用户的电子邮件客户端决定打开电子邮件的纯文本版本,则 link 仍将被包装。
# solution: do not track clicks
# caveat: only works in HTML, not in plain text emails
<a clicktracking=off href="http://foo.bar">Confirmation link</a>
因此 Link 跟踪对于纯文本电子邮件来说是非常必要的。
有什么方法可以使消息框架与 Link 跟踪一起工作吗?
当 SendGrid 跟踪您的 link 时,"click" 转到 SendGrid,returns 一个 302 Found
重定向到您在原始文件中提供的 URL电子邮件,在 SendGrid 跟踪它之前。
因此,只要您在那里提供正确的 link,当 "click" 到达您的服务器时,它会返回到那个位置,并带有适当的令牌。
您可以在 Chrome 的开发人员工具中查看此行为,在 网络 选项卡下,这应该可以帮助您解决此处发生的问题。
此外,您可以在 设置:跟踪设置 部分下禁用所有 SendGrid 的点击跟踪,而不仅仅是 link-by-link .
默认情况下,SendGrid 不跟踪纯文本 links,因为它使它们变得更长。如果您希望它这样做,您必须在相同的设置下主动启用它。现在很少有收件人以纯文本形式查看,因此它对您的参与统计数据的贡献不大,因此通常不建议启用该功能。