从Rails发送每周简报电子邮件的策略

时间:2015-11-19 03:55:28

标签: ruby-on-rails email mandrill newsletter

因此,我们有大约50,000名注册了每周简报的用户。此电子邮件的内容是针对每个用户个性化的,但它不是群发电子邮件。

我们正在使用Rails 4和Mandrill。

现在,每当我们要启动此emails.rake任务时,我们需要花费大约12个小时,而且我正在寻找分配时间或缩短时间的方法。

我可以使用哪些技术来改善这段时间,只有越来越多的人注册,这些技术才会越来越长?

我正在考虑使用mandrill模板,只是将json对象发送到mandrill并让他们从他们的结尾发送电子邮件,但我不确定这是否有助于提高速度。

在50,000+级别:如何保持电子邮件发送时间的可管理性?

2 个答案:

答案 0 :(得分:1)

看起来您可以使用MailyHerald。它是用于管理应用程序电子邮件的Rails gem。它使用Sidekiq工作线程在后台发送个性化电子邮件,这可以帮助您提高性能。

MailyHerald有一个很好的Web UI,可以使用Amazon SES或Mandrill等电子邮件服务。

答案 1 :(得分:0)

您可能需要查看Mandrill上的合并标记。它允许您为每封电子邮件定义自定义内容。因此,您可以打破简报,向Mandrill发送更少的API调用,而不是每封电子邮件1次。调用次数将取决于数据的大小,因为我确信可能存在限制。

您只需创建一个模板,并在需要放置用户特定内容的地方放入合并变量,例如* | custom_content_placeholder | **。您可以在系统中执行此模板操作,只需将其传递给消息,或者您可以在Mandrill中进行设置并调用该模板。

当您进行Mandrill API调用以发送电子邮件或电子邮件模板时,您只需附加JSON数据,例如:

"message": {
        "global_merge_vars": [
            {
                "name": "global_placeholder",
                "content": "Content to replace for all emails"
            }
        ],
        "merge_vars": [
            {
                "rcpt": "user@domain.com",
                "vars": [
                    {
                        "name": "custom_content_placeholder",
                        "content": "User specific content"
                    },
                    {
                        "name": "custom_content_placeholder2",
                        "content": "More user specific content"
                    }
                ]
            },
            {
                "rcpt": "user2@domain.com",
                "vars": [
                    {
                        "name": "custom_content_placeholder",
                        "content": "User2 specific content"
                    },
                    {
                        "name": "custom_content_placeholder2",
                        "content": "More user2 specific content"
                    }
                ]
            }
        ],

您可以在此处找到有关合并标记的更多信息:

https://mandrill.zendesk.com/hc/en-us/articles/205582487-How-to-Use-Merge-Tags-to-Add-Dynamic-Content

如果您熟悉用于模板化的把手,Mandrill现在支持使用合并标签:

http://blog.mandrill.com/handlebars-for-templates-and-dynamic-content.html