2010-08-19 33 views
19

Nếu tôi gửi 100 email cho người dùng đã đăng ký và tôi muốn biết liệu người dùng có mở email hay khôngThông báo mở email - ruby ​​trên đường ray

Làm cách nào để thực hiện điều này bằng Ruby on Rails?

+0

Câu trả lời của Doon dưới đây là kỹ lưỡng và chính xác. Tôi tìm thấy những loại yêu cầu này thường đến từ các bên liên quan chỉ xem phần "thư" của email và nhấn mạnh vào việc áp dụng đảm bảo gửi thư xin vui lòng-đăng ký tại đây để gửi email. Tôi nghĩ bạn nên nói chuyện với khách hàng của bạn và giải thích những hạn chế đối với họ. – Mhmmd

+2

Vấn đề không phải là muốn biết nếu nó được mở ra, vấn đề là với "hay không". Thêm lỗi web truyền thống vào email HTML có thể cho bạn biết liệu email có được mở hay không. Nó có thể đã được mở ra và bạn không biết nó, nhưng nó là khá khó mà lỗi sẽ nói nó đã được mở ra khi nó không được. Mặc dù ít chính xác hơn nhưng đây vẫn là một biện pháp tốt. Đặc biệt là khi muốn so sánh sự thành công của một chiến dịch với một chiến dịch khác. –

Trả lời

24

Cách duy nhất để thực hiện việc này là sử dụng email html có hình ảnh theo dõi. Bạn cần đưa hình ảnh cụ thể của người dùng vào mã.

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

thêm các tuyến đường sau:

# 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 

trong email của bạn mẫu một cái gì đó như thế này:

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

Nhưng lưu ý, rằng đây nó không được bảo đảm rằng người dùng đọc email và tải hình ảnh, một số ứng dụng email không tải hình ảnh, cho đến khi người dùng muốn. Và nếu anh ta không bạn không thể làm bất cứ điều gì về điều này. Ngoài ra nếu người dùng chỉ sử dụng thư văn bản, điều này sẽ không hoạt động.

+2

để hiển thị hình ảnh trong trình duyệt ---- send_file "/path/to/an/image.gif",: type => 'image/gif',: disposition => 'inline' ---- send_file "/ path /to/an/image.jpg ",: type => 'image/jpeg',: disposition => 'inline' – SyntaxGoonoo

+0

quan điểm kỹ thuật - câu trả lời này đã giải quyết được vấn đề của tôi. Có - Tôi hoàn toàn đồng ý với @Doon –

9

Câu trả lời ngắn gọn, Bạn không thể. Câu trả lời hơi dài Bạn không thể tin được.

Sử dụng một cái gì đó như VERP bạn có thể tự động hóa quá trình xử lý bị trả lại, để có được ý tưởng khá tốt nếu máy chủ thư từ xa đã chấp nhận email. Nhưng sau đó tất cả mọi phiên cược đều bị tắt. Bạn có thể không thực sự biết những gì các máy chủ email đã làm với nó, (tuyến nó vào thư mục rác/thư rác, đặt trong hộp thư đến, âm thầm thả nó trên sàn/bit xô, vv ..). Bạn có thể bật các tiêu đề đọc-nhận trong email của bạn, nhưng đó là khách hàng cụ thể (và những người như tôi ăn/từ chối chúng). Bạn có thể xem xét sử dụng lỗi web, ví dụ: tùy chỉnh từng email bằng tệp HTML, kéo hình ảnh từ xa có id duy nhất được liên kết với nó, nhưng một lần nữa là khách hàng cụ thể, hầu hết sẽ không tải hình ảnh từ xa. Vì vậy, trừ khi email bị trả lại, không có cách nào đáng tin cậy 100% để cho biết điều gì sẽ xảy ra với email sau khi nó rời khỏi máy chủ của bạn.

+0

Có - Tôi hoàn toàn đồng ý với bạn. –

2

Tôi không quen thuộc với Ruby nhưng đã viết nhiều ứng dụng gửi thư hàng loạt. Bạn có thể sử dụng hình ảnh webbug để có tỷ lệ mở gần đúng. Về cơ bản nó chỉ là một một pixel hoặc hình ảnh trong suốt với một số thông tin theo dõi:

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

Những gì tôi làm là tạo ra một thư mục gọi là trackingimage.gif với một chỉ mục trong nó mà đọc và lưu trữ các params url và sau đó quyết định chuyển đến hình ảnh thực.

Các vấn đề liên quan