我在使用带有ActionMailer的应用程序使用rails 2,但这是关于电子邮件的一般问题。
当我们发送电子邮件时,我将对应于该电子邮件的记录保存在数据库表中。我想跟踪人们是否阅读过电子邮件,并想知道最好的方法。在最初的谷歌搜索,似乎我偶然发现垃圾邮件发送者和电子邮件客户之间的持续战斗!
我的第一个想法是使用“读取收据”标题,但我知道许多客户端不支持这种情况,因此不可靠。之后,我读到了在邮件中包含图像以及检测到正在加载图像的策略。我在想我可以在图片网址中添加一个带有电子邮件记录ID的参数,这样当我收到该图片的请求时,我可以看到它是否有(例如)email_id参数,如果有,请标记相应的电子邮件已被阅读。
但是,我记得很多客户对这种策略是明智的,并且特别询问观众是否想要显示图像。显然他们可能会说不。
我是否正确地认为我无法在邮件中引入其他资源,例如样式表?因为如果我可以拉入它们,我可以使用样式表而不是图像来做同样的技巧。
感谢任何建议,max
答案 0 :(得分:1)
外部托管的样式表通常与图像的处理方式相同。如果用户完全使用HTML格式的电子邮件,客户端将不会在没有提示用户的情况下下载它们。
要考虑的一件事 - 您要确定电子邮件是否已读取,而不一定只是收到,对吧?格式化您的电子邮件,以便在不查看图像的情况下无法轻松阅读,并在顶部添加“浏览器中的视图”链接。跟踪图像和页面格式视图,我认为您将有一种相当可靠的方法来测量实际读取。
答案 1 :(得分:1)
迟到了,但我们遇到了类似的问题。
我们正在跟踪电子邮件中包含的指向我们网站的链接。我们这样做,就像你一样,每个电子邮件发送一个数据库记录。我们为每封电子邮件生成了一个唯一的哈希密钥,并将其作为参数包含在电子邮件中包含的所有链接中。
我们只需要一个查找参数的before_filter,并使用唯一的哈希来识别正确的电子邮件记录事实。
我们使用唯一的哈希键(而不是DB的主键),因此它更安全/可靠。
显然,这种方法只能帮助我们跟踪我们的电子邮件产生的点击次数(而不是如果它们已被阅读),但它仍然有用,因为我们可以看到我们的哪些用户点击了哪些链接。
答案 2 :(得分:0)
我们也遇到了重大问题。
我们有任务wek门户网站,用户在那里创建任务(比如画我的房子)然后我们邀请画家给任务创建者一个画他房子的价格。
为此我们有一个非常先进的电子邮件系统,它发送邀请,如果他们接受邀请,我们会向他们发送任务创建者的联系信息。
我们需要能够跟踪电子邮件是否已打开,然后一旦打开,我们就知道该公司获得了联系信息,我们现在可以向任务创建者发送另一封电子邮件,告诉他们他们可以期待与该公司联系。
问题是跟踪电子邮件是否打开根本不可靠。有这样的系统,如msgtag(不支持广泛的邮件客户端,如雅虎和其他主要客户),我们的电子邮件API客户端(弹性电子邮件)甚至提供一些API回调函数,告诉我们每封电子邮件是否打开或弹跳或其他什么。但同样,它不可靠。要跟踪它是否打开,弹性电子邮件只包含1x1像素图像并跟踪它是否已打开。因此,如果人们没有点击“在此电子邮件中显示图片”,则不会将其视为已打开。
所以基本上我们有两种选择。
将内容的重要部分打印在图像上,他们必须查看以获取我们想要跟踪的信息(在这种情况下是联系信息)
只需在电子邮件中有一个链接“点击此处获取联系信息”,然后跟踪是否点击了该链接。
总而言之,“跟踪如果打开”完全无用且不可靠,除非您可以完全控制您的收件人正在使用哪些电子邮件客户端以及他们如何使用它们(例如,如果他们都是您的员工或其他东西)。