因此,我们有大约50,000名注册了每周简报的用户。此电子邮件的内容是针对每个用户个性化的,但它不是群发电子邮件。
我们正在使用Rails 4和Mandrill。
现在,每当我们要启动此emails.rake
任务时,我们需要花费大约12个小时,而且我正在寻找分配时间或缩短时间的方法。
我可以使用哪些技术来改善这段时间,只有越来越多的人注册,这些技术才会越来越长?
我正在考虑使用mandrill模板,只是将json对象发送到mandrill并让他们从他们的结尾发送电子邮件,但我不确定这是否有助于提高速度。
在50,000+级别:如何保持电子邮件发送时间的可管理性?
答案 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"
}
]
}
],
您可以在此处找到有关合并标记的更多信息:
如果您熟悉用于模板化的把手,Mandrill现在支持使用合并标签:
http://blog.mandrill.com/handlebars-for-templates-and-dynamic-content.html