如何通过添加像素跟踪来跟踪单个收件人的读取状态

How to track read status for individual recipients by adding pixel tracking

提问人:Raj Chandra 提问时间:9/12/2023 最后编辑:Raj Chandra 更新时间:9/17/2023 访问量:173

问:

我正在构建一个电子邮件应用程序,该应用程序具有在发送电子邮件后查看已读收件人的功能。例如:如果我向 P1 和 cc P2 和 P3 发送了一封电子邮件,那么当 P1 打开电子邮件时,我作为发件人应该能够看到 P1 阅读了他们的电子邮件。

为了实现这一点,我使用单个跟踪像素方法,其中我将一个像素添加到我发送的 html 中。但挑战在于,我无法向所有收件人发送唯一的跟踪链接,因为电子邮件的HTML部分对每个人都是一样的,而且我无法控制将哪封电子邮件发送给哪个收件人(这里是P1,P2和P3)。

电子邮件 html-email analytics 电子邮件客户端

评论


答:

0赞 Arash Kadkhodaei 9/15/2023 #1

将收件人电子邮件/ID 作为参数包含在跟踪像素网址中

例:http://example.com/[email protected]

您的跟踪服务器可以从 URL 中提取收件人数据

0赞 VonC 9/16/2023 #2

我在这里假设您确实遵守了相关的隐私法规,充分告知用户有关跟踪实践的信息。通常建议允许用户选择退出跟踪,并且仅将跟踪用于合法目的。

如果这样做,那么可以考虑为每个收件人实现单独的跟踪像素(所谓的“间谍像素”):


收件人的唯一跟踪链接:该解决方案应有助于为每个收件人生成唯一的跟踪链接或像素,即使电子邮件的 HTML 部分对所有收件人都相同。它应该允许系统识别哪个收件人(P1、P2 或 P3)单独打开了电子邮件。

第 1 步:收件人的唯一跟踪链接

1.1 生成唯一标识符

为每个收件人创建唯一标识符。使用哈希算法(如 hashlib)为每个收件人的电子邮件地址和密钥生成唯一的哈希值。

def generate_unique_identifier(email_address):
    import hashlib
    secret_key = "your_secret_key"
    unique_identifier = hashlib.sha256((email_address + secret_key).encode()).hexdigest()
    return unique_identifier

1.2 创建个性化电子邮件

您需要向每个收件人发送个性化的电子邮件,而不是发送嵌入所有像素的电子邮件,并在电子邮件的 HTML 内容中仅嵌入其特定的跟踪像素。

<!-- Email HTML for P1 -->
<img src="https://yourtrackingserver.com/track/UNIQUE_IDENTIFIER_FOR_P1" width="1" height="1" alt="" />

<!-- Email HTML for P2 -->
<img src="https://yourtrackingserver.com/track/UNIQUE_IDENTIFIER_FOR_P2" width="1" height="1" alt="" />

<!-- Email HTML for P3 -->
<img src="https://yourtrackingserver.com/track/UNIQUE_IDENTIFIER_FOR_P3" width="1" height="1" alt="" />

技术细节:该解决方案应提供有关如何实现建议系统的分步技术指导,包括必要的代码片段、配置或与现有电子邮件协议或平台的集成。

第 2 步:技术细节

2.1 设置服务器

使用后端框架(如 Flask)设置服务器来处理跟踪。配置路由以使用唯一标识符捕获 GET 请求。

from flask import Flask, request

app = Flask(__name__)

@app.route('/track/<unique_identifier>', methods=['GET'])
def track(unique_identifier):
    # Log the access to the database
    log_access(unique_identifier)
    return send_pixel_response()

2.2 记录访问

在跟踪路线中,将每次访问及其各自的唯一标识符和访问时间记录在数据库中。

import datetime

def log_access(unique_identifier):
    access_time = datetime.datetime.now()
    # Log the access time and the unique identifier to a database
    log_to_database(unique_identifier, access_time)

有关详细信息,请参阅 Matthew Moisen 的“如何使用 Flask 登录数据库”。

2.3 发送透明像素

为了保持收件人的无缝体验,服务器应返回 1x1 透明像素图像作为对 GET 请求的响应。

from flask import send_file

def send_pixel_response():
    # Return a 1x1 transparent pixel
    return send_file('path/to/transparent_pixel.png', mimetype='image/png')
1赞 BNazaruk 9/17/2023 #3

简而言之:电子邮件作为一种技术不应该支持跟踪打开。这很好。现有的基于像素的解决方案是一种黑客攻击,并且仅在某些电子邮件客户端允许 html 呈现的情况下才有效。

默认情况下,在客户端级别进行此跟踪可能会违反不同发达国家/地区的许多隐私法。

但是,是的,您必须为每个用户生成不同的跟踪 ID,因此电子邮件必须单独发送。这基本上就是营销人员在大量电子邮件和垃圾邮件中的做法。

要按照您的描述进行操作:将同一封电子邮件发送给多个收件人并查看谁打开了它们,您必须有权访问他们的客户端。但这不太可能发生,因为没有人愿意使用监视他们的客户端。

仅当收件人呈现 html 并允许电子邮件中的外部资源时,像素方法才有效。很多人都有足够的理智,很少这样做。当然,绝不是随意的电子邮件。即使是电子邮件营销人员也无法真正有意义地使用打开率。允许远程内容的人太少,除非你激励他们。比如在外部加载的图像中有一个特殊的理想代码或类似的东西。