电子邮件打开通知 – ruby​​ on rails

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

我怎么能用Ruby on Rails做到这一点?

唯一的方法是使用带有跟踪器图像的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) %> 

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

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

使用类似VERP的东西,您可以自动执行退回处理,以便在远端邮件服务器接受电子邮件时获得相当好的建议。 但在那之后所有的赌注都没有了。 你无法真正告诉电子邮件服务器用它做了什么,(将它路由到垃圾邮件/垃圾邮件文件夹,放入收件箱,静默地将它放在地板/位桶等等)。 您可以在电子邮件中启用读取收据标题,但这是特定于客户端的(像我这样的人吃/拒绝它们)。 您可以考虑使用Web错误,例如使用HTML文件自定义每个电子邮件,拉取远程图像,该图像具有与之关联的唯一ID,但同样是客户端特定的,大多数不会加载远程图像。 因此,除非电子邮件反弹,否则没有100%可靠的方式来告知电子邮件离开服务器后会发生什么。

我对ruby不太熟悉,但已经编写了多个群发邮件应用程序。 您可以使用webbug图像获得近似的开放率。 基本上它只是一个像素或透明图像,带有一些跟踪信息:

  

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