Я сделал это, используя немного другой метод, который работает.В этом примере я отслеживаю, какие пользователи открыли письмо, но вы можете использовать другой подход.В URL:
url(r"^open-tracking/(?P<user>[0-9]+)/$", PixelView.as_view(), name="pixel_view")
В представлении:
import os.path
class PixelView(View):
def get(self, request, *args, **kwargs):
script_dir = os.path.dirname(os.path.abspath(__file__))
image_data = open(os.path.join(script_dir, 'static/img/open-tracking/pixel.png'), 'rb').read()
user_id = kwargs.get('user')
###Record somewhere that user_id has viewed the email
return HttpResponse(image_data, content_type="image/png")
В сообщении электронной почты:
<img src="{{ settings.PROJECT_DOMAIN }}/open-tracking/{{ user.id }}/">
При загрузке сообщения оно вызывает представление PixelView с пользователями.Я БЫ.PixelView получает идентификатор пользователя (который затем можно использовать для регистрации в том месте, где пользователь прочитал электронную почту), а затем возвращает пиксельное изображение для отображения в электронном письме.
Несколько замечаний, 1) пиксель /изображение должно быть прозрачным изображением 1x1.2) Это не работает, если почтовый клиент отключил загрузку изображения.3) Почтовый клиент иногда загружает содержимое изображения до фактического открытия электронного письма