【问题标题】:Keeping track of whether an email has been opened跟踪电子邮件是否已打开
【发布时间】:2011-10-07 20:25:30
【问题描述】:

我在这个应用程序中使用 Rails 2 和 ActionMailer,但这是关于电子邮件的一般问题。

当我们发送电子邮件时,我将与电子邮件对应的记录保存在数据库表中。我想跟踪人们是否阅读过这些电子邮件,并且想知道最好的方法。在最初的谷歌搜索中,我似乎偶然发现了垃圾邮件发送者和电子邮件客户端之间的持续战斗!

我的第一个想法是使用“已读回执”标题,但我知道很多客户不支持此功能,因此不可靠。在那之后,我读到了在邮件中包含图像的策略,并检测到该图像正在加载。我在想我可以在图像 url 中放置一个带有电子邮件记录 ID 的参数,这样当我收到对该图像的请求时,我可以查看它是否有(例如)email_id 参数,如果有,标记相应的电子邮件已被阅读。

但是,我记得许多客户对这种策略很明智,并专门询问邮件的查看者是否要显示图像。显然他们可能会拒绝。

我是否认为我不能在邮件中提取其他资源,例如样式表?因为如果我可以将它们拉进来,我可以做同样的技巧,但使用样式表而不是图像。

感谢任何建议,最大

【问题讨论】:

  • “许多客户对这种策略很明智”的原因是他们认为他们的用户不希望他们的电子邮件阅读被跟踪。他们很可能是对的。不要这样做。
  • @Paul - 我知道您来自哪里,但我认为我们的许多用户不会在意。我们有一个仅限订阅的用户群,因此收到电子邮件的每个人都已经付费使用该网站,或者已经让其他人代表他们付费。这不像是我们在向大量从未听说过我们的人发送垃圾邮件。
  • 问题是如果有另一种技术,你的用户不希望允许跟踪他们的电子邮件阅读的人也会使用它。 @Dave Swerksy 的技术可能和你能得到的一样好,但它仍然有点令人毛骨悚然......如果你只是认为他们不在乎,你打算问他们并只跟踪选择加入的用户吗?跨度>
  • @Paul 不,我不是 :) 但是,问他们到底是什么? “你介意在你打开这封邮件的时候通知我们吗?其实我们已经知道了。” - 这只是令人困惑。一个问题是我们的用户都是学校老师,虽然他们无疑都是聪明人,但他们中的许多人在技术上相当幼稚。像上面这样的问题通常只会引起混乱。
  • 我真的不相信你不会问你的读者是否介意你窥探他们的电子邮件阅读的回复,因为他们可能会感到困惑。到处都是可疑的营销人员的借口。然而,他们是你的客户,如果你觉得他们已经给予(暗示的)许可,请继续 :)

标签: email actionmailer email-client email-spam


【解决方案1】:

外部托管的样式表通常以与图像相同的方式处理。客户端不会在没有提示用户的情况下下载它们,如果这适用于 HTML 格式的电子邮件。

需要考虑的一件事 - 您要确定电子邮件是否已已阅读,不一定是刚刚收到,对吧?格式化您的电子邮件,使其在不查看图像的情况下无法轻松阅读,并在顶部包含“在浏览器中查看”链接。跟踪图像和页面格式的视图,我认为您将有一个相当可靠的方法来衡量实际读取。

【讨论】:

  • 页面格式视图是 HTML 格式的电子邮件,在浏览器中呈现为网页。当您单击“在浏览器中打开此电子邮件”链接时,它们就是您获得的页面。
【解决方案2】:

这有点晚了,但我们遇到了类似的问题。

我们正在跟踪电子邮件中包含的指向我们网站的链接。像您一样,我们通过发送每封电子邮件都有一个数据库记录来做到这一点。我们为每封电子邮件生成了一个唯一的哈希键,并将其作为参数包含在电子邮件中的所有链接中。

然后我们简单地有一个 before_filter 来查找参数并通过使用唯一哈希来识别正确的电子邮件记录并根据正确的电子邮件记录记录事实。

我们使用唯一的哈希键(而不是数据库的主键)只是为了更安全/可靠。

显然,这种方法只能帮助我们跟踪我们的电子邮件产生的点击量(而不是如果它们已经被阅读过),但它仍然很有用,因为我们可以看到我们的哪些用户点击了哪些链接。

【讨论】:

    【解决方案3】:

    我们在这方面也遇到了重大问题。

    我们有任务周门户,用户可以在其中创建任务(例如粉刷我的房子),然后我们邀请画家为任务创建者提供粉刷房子的价格。

    为此,我们有一个非常先进的电子邮件系统,它会发送邀请,如果他们接受邀请,我们会将任务创建者的联系信息发送给他们。

    我们需要能够跟踪电子邮件是否被打开,然后一旦打开,我们就知道公司获得了联系信息,我们现在可以向任务创建者发送另一封电子邮件,告诉他们可以期待由该公司联系。

    问题是跟踪电子邮件是否被打开根本不可靠。有不同的系统,比如 msgtag(不支持广泛的邮件客户端,如 yahoo 和其他主要客户端),我们的电子邮件 API 客户端(弹性电子邮件)甚至提供一些 API 回调函数来告诉我们是否打开了每封电子邮件或反弹或其他。但同样,它不可靠。要跟踪它是否打开,弹性电子邮件只包含一个 1x1 像素的图像并跟踪它是否打开。因此,如果人们不单击“在此电子邮件中显示图像”,则不会将其跟踪为已打开。

    所以基本上我们有两个选择。

    1. 将内容的重要部分打印在图像上,他们必须查看这些部分才能获取我们想要跟踪的信息(在本例中为联系信息)

    2. 只需在电子邮件中添加一个链接“单击此处获取联系信息”,然后跟踪是否被点击。

    因此,总而言之,“跟踪是否打开”是完全无用且不可靠的,除非您可以完全控制您的收件人正在使用哪些电子邮件客户端以及他们如何使用它们(例如,如果他们都是您的员工或其他人)。

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 2017-03-30
      • 2019-03-09
      • 1970-01-01
      相关资源
      最近更新 更多