【问题标题】:Email open notification - ruby on rails电子邮件打开通知 - ruby​​ on rails
【发布时间】:2011-04-01 07:24:07
【问题描述】:

如果我要向注册用户发送 100 封电子邮件,我想知道用户是否打开电子邮件

如何使用 Ruby on Rails 做到这一点?

【问题讨论】:

  • 下面 Doon 的回答是彻底而准确的。我发现这类要求通常来自只看到电子邮件的“邮件”部分并坚持对电子邮件应用请在此处签名的蜗牛邮件递送保证的利益相关者。我认为您最好与您的客户交谈并向他们解释限制。
  • 问题不在于想知道它是否被打开,问题在于“与否”。将传统的网络错误添加到 HTML 电子邮件可以告诉您是否打开了电子邮件。它可能已经被打开而你不知道,但它不太可能会说它不是打开的。虽然不够准确,但它仍然是一个很好的衡量标准。尤其是在想要将一个广告系列的成功与另一个广告系列进行比较时。

标签: ruby-on-rails email


【解决方案1】:

简短的回答,你不能。稍长的答案你不能可靠。

使用 VERP 之类的东西,您可以自动处理退回邮件,以便了解远端邮件服务器是否接受了电子邮件。但在那之后,所有的赌注都被取消了。您无法真正说出电子邮件服务器对它做了什么,(将其路由到垃圾/垃圾邮件文件夹,放入收件箱,默默地将其放在地板/比特桶上,等等。)。您可以在电子邮件中启用已读回执标题,但这是特定于客户的(像我这样的人会吃/拒绝它们)。您可以考虑使用网络错误,例如使用 HTML 文件自定义每封电子邮件,该文件会拉取远程图像,并具有与之关联的唯一 ID,但同样是特定于客户端的,大多数都不会加载远程图像。因此,除非电子邮件被退回,否则没有 100% 可靠的方法来判断电子邮件在离开您的服务器后会发生什么。

【讨论】:

  • 是的 - 我完全同意你的看法。
【解决方案2】:

这样做的唯一方法是使用带有跟踪器图像的 html 电子邮件。您需要在代码中包含用户特定的图像。

class TrackingController < ApplicationController
  def image
    # do something with params[:id]
    send_file "/path/to/an/image"
  end
end

添加以下路线:

# Rails 2
map.tracking_image "tracking_image/:id.gif", :controller => 'tracking', :action => image

# Rails 3
match 'products/:id', :to => 'tracking#image', :as => "tracking_image"

# Rails 4 (match without verb is deprecated)
get 'producsts/:id' => 'tracking#image', as: 'tracking_image'
# or
match 'producsts/:id' => 'tracking#image', as: 'tracking_image', via: :get

在您的电子邮件模板中是这样的:

<%= image_tag tracking_image_url(@user.id) %>

但请注意,这并不能保证用户阅读电子邮件并加载图像,一些电子邮件客户端不会加载图像,直到用户想要。如果他不这样做,您将无能为力。此外,如果用户只使用文本邮件,这也不起作用。

【讨论】:

  • 用于在浏览器中渲染图像 ---- send_file "/path/to/an/image.gif", :type => 'image/gif', :disposition => 'inline' - --- send_file "/path/to/an/image.jpg", :type => 'image/jpeg', :disposition => 'inline'
  • 技术观点 - 这个答案解决了我的问题。是的 - 我完全同意@Doon
【解决方案3】:

我对 ruby​​ 不是很熟悉,但写过多个邮件群发应用程序。您可以使用 webbug 图像来获得大致的打开率。基本上它只是一张带有一些跟踪信息的单像素或透明图像:

<img src="http://mysite/trackingimage.gif?email=x&customer=y">

我所做的是创建一个名为 trackingimage.gif 的目录,其中包含一个索引,用于读取和存储 url 参数,然后重新定位到真实图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2012-08-29
    • 2017-06-22
    • 2013-06-08
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多