基于Django的邮件像素追踪

2 投票
1 回答
2432 浏览
提问于 2025-04-18 11:45

我想知道,我发送的邮件中,哪些被打开了。

这是我解决这个问题的方法 -

  1. 在要显示的HTML模板中创建一个图片文件。

    < img src="{{ tracking_url }}" height="1" width="1">

  2. 当邮件被打开时,会向一个网址发送请求,这个网址会有一个经过base64编码的模式:

    base64_pattern = r'([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)'

    url(r'^tracking/(?P{})/$'.format(base64_pattern), 'tracking_image_url', name='tracking_image_url'),

  3. 这个网址会返回一张图片,并更新计数器,具体如下 -

    TRANSPARENT_1_PIXEL_GIF = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b"

视图 -

def tracking_image_url(request, mail_64=None):
    eml = base64.b64decode(mail_64)
    // Update the counters in the DB table for the email address. 
    return HttpResponse(TRANSPARENT_1_PIXEL_GIF, content_type='image/gif')

我做了这些,但无法追踪邮件是否被打开,我漏掉了什么?

1 个回答

-1

试试这个

import base64
from django.http import HttpResponse

PIXEL_GIF_DATA = base64.b64decode(
b"R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")


def index(request):
   return HttpResponse(PIXEL_GIF_DATA, content_type='image/gif')

撰写回答