铁路4邮件发送大量电子邮件与密件抄送和取消订阅功能

时间:2015-11-19 09:09:13

标签: email ruby-on-rails-4 bcc unsubscribe

我正在开发一个具有订阅功能的小博客。它将通过带有mandrill服务的密送邮件通知订户过去一周的帖子。它工作正常,但我坚持取消订阅功能。据我所知,任何订阅者收到的邮件都与bcc相同,所以可能是我。 所以我的问题是如何通过密送邮件附加每个订阅者独有的链接,以便他们取消订阅? 这是我的代码片段:

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

1 个答案:

答案 0 :(得分:0)

据我了解您的问题,取消订阅网址将在电子邮件的内容中。

为了让它工作,我建议你为邮件模板生成一个唯一的标识符,然后你可以用它来识别取消订阅的用户。

检查:http://guides.rubyonrails.org/action_mailer_basics.html点2.1.3 - 创建邮件程序视图。

让我们说你的模板会有类似的东西:

<p>
  Here is your email contents
</p>
<p><a href="#{@unsubscribe_url}">Unsubscribe</a></p>

这个unsubscribe_url变量会产生类似的东西:

http://your-domain.com/newsletter/unsubscribe/unique-id-generated-for-the-user

在config / routes.rb文件中创建一个路由,将您带到处理取消订阅的控制器。

您还可以在此处查看:http://railscasts.com/episodes/312-sending-html-email

修改

不幸的是,从我在Mandrill文档中看到的情况来看,我认为您无法通过密件抄送列表中的电子邮件进行合并变量的1对1映射。

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

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

http://your-domain.com/newsletter/unsubscribe

这将呈现一个带有输入的页面,您可以要求该人写下他们的电子邮件地址。 使用此解决方案,您必须考虑不良用户行为,例如:

  • 插入的电子邮件不属于您的用户列表
  • alice typed bob的电子邮件

b)你打破了对mandrill的电子邮件请求的逻辑。这样您就可以保留唯一ID登录信息,但不是发送电子邮件列表,而是发送电子邮件请求。您可以逐个发送电子邮件请求。