如何在Ruby on Rails中跟踪电子邮件?

时间:2016-08-17 13:24:12

标签: ruby ruby-on-rails-4 ruby-on-rails-3.2

我正在使用rails 4.0,我想知道如何获取电子邮件跟踪。

我的意思是我想知道有多少用户打开我的电子邮件以及他们何时打开电子邮件,如果已删除,是否已被删除。

简而言之,我想知道如何在成功交付电子邮件后跟踪这些信息。

4 个答案:

答案 0 :(得分:1)

正如@max_pleaner建议的那样,您可以使用该宝石或浏览此帖之一 - https://myles.eftos.id.au/blog/2013/08/25/track-email-opens-using-a-pixel-tracker-from-rails/#.V7XSSbMvDDd

您尝试嵌入的内容称为信标图像或网络错误

答案 1 :(得分:1)

您可以在其中插入一个像素并跟踪其下载次数。就像一个图像。我无法写出确切的方式,因为我从未尝试过,但我确信它可以这样做。

答案 2 :(得分:1)

我将举例说明我是如何实现此功能的:

  1. 我的CustomMailer课程会生成类似于以下内容的Google跟踪网址:
  2. http://www.google-analytics.com/collect?v=1&tid= Tracking ID&cid=Customer ID&t=Event hit type&ec=Event Category&ea=Event Action&el=Event Label&cs=Campaign Source&cm=Campaign Medium&cn=Campaign Name

    @google_analytics_url = url

    1. 我的CustomMailView将此链接添加到图片(像素图片)

      <img src=<%= @google_analytics_url %> width=1 height=1 />

    2. More general info about different google analytics parameters

      完整示例 rails official docs

      邮件程序:

      class UserMailer < ApplicationMailer
        default from: 'notifications@example.com'
      
        def welcome_email(user)
          @user = user
          @google_analytics_url  = 'http://www.google-analytics.com/collect?v=1&tid=UA-****&cid=CustomerID&t=event&ec=open_email&ea=Event Action&el=Event Label&cs=Campaign Source&cm=Campaign Medium&cn=Campaign Name'
          mail(to: @user.email, subject: 'Welcome to My Awesome Site')
        end
      end
      

      查看mail_view.html.erb:

      <!DOCTYPE html>
      <html>
        <head>
          <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
        </head>
        <body>
          <h1>Welcome to example.com, <%= @user.name %></h1>
          <p>
            You have successfully signed up to example.com,
            your username is: <%= @user.login %>.<br>
          </p>
          <p>
            To login to the site, just follow this link: <%= @url %>.
          </p>
          <p>Thanks for joining and have a great day!</p>
          <img src=<%= @google_analytics_url %> width=1 height=1 />
        </body>
      </html>
      

答案 3 :(得分:0)

我一直在努力解决这个问题。

首先,您的邮件将如下所示

<强> UserMailer

class UserMailer < ApplicationMailer


    default from: 'aniket.tiw@gmail.com'

    def send_mail(email,body ,subject,user)
        @body = body

        @user = user
        mail(to: email, subject: subject)
    end


end

现在让我们创建路线

<强>的routes.rb

Rails.application.routes.draw do

  get '/trackemail/:id', to: 'users#track_email'

end

现在进入视图之前。您必须安装Localtunnel,以便每当有人打开电子邮件时都可以重定向,因为Gmail不知道localhost

我已附加链接link如何安装localtunnel。

正如你在我的视图中所看到的,我也附加了随机字符串。我已经这样做了,因为这个方法第一次起作用,然后Gmail缓存了我们的记录。所以每次URL应该是新的并且图像打开。即使你可以通过提供风格来隐藏图像

<强> user_mailer文件/ send_mail.html.erb

<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />

  </head>
  <body >
    <h1>Hi  </h1>
    <p>
      <%= @body %>

       <% str = (0...8).map { (65 + rand(26)).chr }.join %>
      <img src=<%="https://morwhnykzf.localtunnel.me/#{@user.id}?#{str} "%> class="profile" />
    </p>

  </body>
</html>

<强> users_controller

    class UsersController < ApplicationController
     def track_email
        send_file("/home/aniketshivamtiwari/Desktop/track.jpg",:disposition => true,:type=> 'image/jpeg',:x_sendfile => true)

      end

end