Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email Rail 4邮递员使用密件抄送和取消订阅功能发送大量电子邮件_Email_Ruby On Rails 4_Bcc_Unsubscribe - Fatal编程技术网

Email Rail 4邮递员使用密件抄送和取消订阅功能发送大量电子邮件

Email Rail 4邮递员使用密件抄送和取消订阅功能发送大量电子邮件,email,ruby-on-rails-4,bcc,unsubscribe,Email,Ruby On Rails 4,Bcc,Unsubscribe,我正在开发一个带有订阅功能的小博客。它将通过密件抄送邮件和mandrill服务通知订阅者上周的顶级帖子。它工作得很好,但我被取消订阅功能卡住了。据我所知,任何订户收到的邮件都与密件抄送相同,我也可能如此。 因此,我的问题是,如何通过密件抄送邮件附加每个订阅者独有的链接,以允许他们取消订阅? 下面是我的代码片段: addresses = subscription_emails.all.pluck(:email) mail(from: "no-reply@blog.com", bcc: addres

我正在开发一个带有订阅功能的小博客。它将通过密件抄送邮件和mandrill服务通知订阅者上周的顶级帖子。它工作得很好,但我被取消订阅功能卡住了。据我所知,任何订户收到的邮件都与密件抄送相同,我也可能如此。 因此,我的问题是,如何通过密件抄送邮件附加每个订阅者独有的链接,以允许他们取消订阅? 下面是我的代码片段:

addresses = subscription_emails.all.pluck(:email)
mail(from: "no-reply@blog.com", bcc: addresses,subject: "Posts of past week")

据我所知,你的问题,取消订阅的网址将在电子邮件的内容

为了实现这一点,我建议您为邮件模板生成一个唯一标识符,然后您可以使用该标识符来标识正在取消订阅的用户

检查:第2.1.3点-创建邮件程序视图

假设您的模板具有以下内容:

<p>
  Here is your email contents
</p>
<p><a href="#{@unsubscribe_url}">Unsubscribe</a></p>
在config/routes.rb文件中创建一条路由,将您带到处理取消订阅的控制器

您还可以在此处查看:

编辑

不幸的是,从我在Mandrill文档中看到的情况来看,我认为您没有办法将合并变量与bcc列表中的电子邮件进行1:1映射

通过这种方式,我看到了两种可能的解决方案:

a) 您并没有为每个用户提供唯一的id,而是有一个通用链接,可以将您带到一个取消订阅页面。 例如:

http://your-domain.com/newsletter/unsubscribe
这将呈现一个带有输入的页面,在该页面中,您将要求此人填写其电子邮件地址。 使用此解决方案时,您必须考虑不良的用户行为,例如:

  • 插入的电子邮件不属于您的用户列表
  • 爱丽丝打了鲍勃的电子邮件

b) 你打破了向mandrill发送电子邮件请求的逻辑。通过这种方式,您可以保留唯一的id登录,但您可以逐个发送电子邮件请求,而不是发送以密件抄送的电子邮件列表。

是的,您理解我的问题。但请允许我澄清一下,我通过盲拷贝发送邮件,所以rails只呈现邮件并将密件抄送列表发送到邮件服务器进行分发。这就是问题所在,我无法生成用户独有的url,因为邮件服务器基本上复制了邮件视图并向用户大量发送。如果我给我的每个客户发邮件,你的指示将是完美的。根据你的评论,我更新了我的答案,因为它太长了,无法发表评论。在mandrill文档中,我看到了一种方法。Mandrill将生成邮件的取消订阅url,如果用户单击它,电子邮件地址将记录在Mandrill阻止列表中。我使用的是通用链接,但这样你就不知道你的应用程序中有谁要求退订了。如果将来您决定更改邮件服务,您必须获取列表并将其从数据库中排除。您是对的,似乎创建一个通用的取消订阅url是一个正确的选择
http://your-domain.com/newsletter/unsubscribe