向多个收件人发送电子邮件时,在邮件程序视图中访问当前收件人的电子邮件

问题描述 投票:0回答:2

我正在使用 Action Mailer 向一组用户发送电子邮件...邮件(至:[array_of_emails]...)。

在视图中,我需要知道刚刚打开电子邮件以设置链接格式的人的电子邮件地址。如果我只是向一个用户发送电子邮件,这当然是直接的,但是了解当前用户打开给定多个收件人的电子邮件的最佳方法是什么?

ruby-on-rails actionmailer
2个回答
0
投票

据我所知,你所问的是不可能的。电子邮件在发送时“呈现”,而不是在用户打开时“呈现”。他们只是查看静态消息。

跟踪打开情况的一种方法是包含一个小图像 (1px x 1px) 并将查询字符串附加到路径中。当收件人打开邮件时,他们的电子邮件阅读器将呈现电子邮件并请求包含查询字符串的图像 URL。然后,您可以拦截它,记录查询字符串引用的用户,然后提供图像。电子邮件应用程序和用户将一无所知。


0
投票

您要求的方法并不完全可行。正如 Jared 所说,带有相同

<a href>
链接的同一封电子邮件会发送给每个收件人。

但是,在多收件人电子邮件中为每个用户创建唯一身份是一个常见问题。 Rails 路由指南中概述了解决方案:https://guides.rubyonrails.org/routing.html#singular-resources

基本上,向 Routes.rb 添加一条特殊路由,该路由链接到控制器操作,该操作重定向到与当前用户相关的链接。例如,如果您想添加指向用户个人资料页面的链接,您可以添加如下代码:

路线.rb:

get '/my_profile', to: 'users#my_profile'

users_controller.rb:

  def my_profile
    redirect_to user_path(current_user)
  end

当然,单击链接后,用户会看到 url 更改为

example.com/users/42
或任何他们的 ID,但如果这是一个问题,您可以通过调整控制器操作来解决它。

© www.soinside.com 2019 - 2024. All rights reserved.