0

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

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

1 回答 1

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

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

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

b)你打破了对山魈的电子邮件请求的逻辑。这样,您将保留唯一的 id 登录名,而不是发送电子邮件列表以密件抄送,而是逐一发送电子邮件请求。

于 2015-11-19T09:27:30.770 回答