Ogni destinatario mostra se la mail è partita e se è stata aperta, con conteggi in dashboard. Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
875 B
Ruby
37 lines
875 B
Ruby
module Mailings
|
|
class OpenPixel
|
|
def self.call(html, recipient)
|
|
new(html, recipient).call
|
|
end
|
|
|
|
def initialize(html, recipient)
|
|
@html = html.to_s
|
|
@recipient = recipient
|
|
end
|
|
|
|
def call
|
|
return @html unless trackable?
|
|
|
|
url = tracking_url
|
|
return @html if url.blank?
|
|
|
|
tag = %(<img src="#{ERB::Util.html_escape(url)}" width="1" height="1" alt="" style="display:block;border:0;width:1px;height:1px;opacity:0;" />)
|
|
if @html.match?(/<\/body>/i)
|
|
@html.sub(/<\/body>/i, "#{tag}</body>")
|
|
else
|
|
"#{@html}#{tag}"
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def trackable?
|
|
@recipient.respond_to?(:tracking_token) && @recipient.tracking_token.present?
|
|
end
|
|
|
|
def tracking_url
|
|
Rails.application.routes.url_helpers.mail_open_url(@recipient.tracking_token, **PublicUrl.options)
|
|
end
|
|
end
|
|
end
|