Django: сервис отслеживания кликов SendGrid предотвращает работу инфраструктуры сообщений - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь реализовать регистрацию с подтверждением по электронной почте, используя Django, используя SendGrid в качестве поставщика электронной почты, мой код SignUpActivationView проверяет токен, а затем перенаправляет пользователя на домашнюю страницу, где с помощью сообщений отображается сообщение об успехе / ошибкеframework:

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)

Пока мой подход работает, пока я копирую и вставляю ссылку в своем браузере, если я нажимаю на нее, пользователь активируется, но сообщение об успехе не отображается в моем приложении.Я полагаю, что это связано с тем, что служба отслеживания кликов SendGrid закрывает мою ссылку:

SendGrid Click Tracking Service

Обходной путь, который я нашел, - сказать SendGrid, что он НЕ отслеживает ссылку, добавиви HTML-атрибут «clicktracking = off», недостатком является то, что я могу только сказать SendGrid, что он не отслеживает ссылки в HTML-версии моей электронной почты.В случае, если почтовый клиент пользователя решит открыть текстовую версию электронного письма, ссылка будет по-прежнему заключена в оболочку.

 # 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>

Таким образом, отслеживание ссылок является довольно обязательным месяцем для писем в виде простого текста.

Есть ли способ заставить фреймворк сообщений работать с отслеживанием ссылок?

1 Ответ

0 голосов
/ 19 октября 2018

Когда SendGrid отслеживает вашу ссылку, "щелчок" переходит к SendGrid, который возвращает перенаправление 302 Found на URL-адрес, который вы указали в исходном письме, до того, как SendGrid его отслеживал.

Итак, до тех пор, покатам вы предоставляете правильную ссылку, и к тому времени, когда «щелчок» попадает на ваш сервер, он возвращается к этому, используя соответствующий токен.
Это поведение можно просмотреть в Инструментах разработчика Chrome в разделе Сеть *Вкладка 1006 *, которая должна помочь вам разобраться с тем, что здесь происходит.

Кроме того, вы можете отключить все функции отслеживания кликов SendGrid, а не просто ссылку по ссылке, в их Настройки: Настройки отслеживания section.
По умолчанию SendGrid не отслеживает текстовые ссылки, поскольку делает их намного длиннее.Вы должны были бы активировать это в тех же самых настройках, если хотите, чтобы это делалось.В наши дни получатель очень редко просматривает текст в обычном тексте, поэтому он не вносит существенный вклад в статистику вашего участия, поэтому включение этой функции обычно не рекомендуется.

...