AMI*_*ING 19 email ruby-on-rails
如果我将向注册用户发送100封电子邮件,我想知道用户是否打开电子邮件
我怎么能用Ruby on Rails做到这一点?
jig*_*fox 26
唯一的方法是使用带有跟踪器图像的html电子邮件.您需要在代码中包含用户特定的图像.
class TrackingController < ApplicationController
def image
# do something with params[:id]
send_file "/path/to/an/image"
end
end
Run Code Online (Sandbox Code Playgroud)
添加以下路线:
# 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
Run Code Online (Sandbox Code Playgroud)
在您的电子邮件模板中,如下所示:
<%= image_tag tracking_image_url(@user.id) %>
Run Code Online (Sandbox Code Playgroud)
但要注意,这不能保证用户阅读电子邮件并加载图像,一些电子邮件客户端不会加载图像,直到用户想要.如果他不这样做,你就无能为力.此外,如果用户仅使用文本邮件,则这也不起作用.
简短的回答,你不能.稍微长一点的回答你不能可靠.
使用类似VERP的东西,您可以自动执行退回处理,以便在远端邮件服务器接受电子邮件时获得相当好的建议.但之后所有的赌注都没有了.你无法真正告诉电子邮件服务器用它做了什么,(将它路由到垃圾邮件/垃圾邮件文件夹,放入收件箱,静默地将它放在地板/位桶等等).您可以在电子邮件中启用读取收据标题,但这是特定于客户端的(像我这样的人吃/拒绝它们).您可以考虑使用Web错误,例如使用HTML文件自定义每个电子邮件,拉取远程图像,该图像具有与之关联的唯一ID,但同样是客户端特定的,大多数不会加载远程图像.因此,除非电子邮件反弹,否则没有100%可靠的方式来告知电子邮件离开服务器后会发生什么.
| 归档时间: |
|
| 查看次数: |
10331 次 |
| 最近记录: |