gpt4 book ai didi

ruby-on-rails-3 - 使用 Rails 3 群发电子邮件

转载 作者:行者123 更新时间:2023-12-04 06:58:05 25 4
gpt4 key购买 nike

我不仅是 Rails 的新手,而且是一般开发的新手,所以如果这是一个基本问题,我深表歉意。我有一个应用程序,我想向选择加入的用户发送群发电子邮件(即时事通讯)。我有两个问题:(1) 我的代码是处理群发邮件的最有效方式吗(即我是否需要使用 for...each 语句)和 (2) 我在 Stack Overflow 上阅读了其他帖子,讨论了重要性邮件服务器并使用延迟作业发送电子邮件。

其他注意事项:

  • 我在使用 Heroku
  • 我在考虑使用 SendGrid
  • 我根据 this tutorial 添加了延迟作业代码

我的问题是:

  1. 即使是单个收件人电子邮件(即用户注册确认),大多数人是否也使用延迟作业?
  2. 我的代码是群发电子邮件最有效的方式吗?
  3. 例如,如果有 1000 个用户。如果我用密件抄送给每个人发送相同的电子邮件,这对资源(即带宽、CPU 等)有很大影响吗?如果是这样,我是否只是将散列传递给邮件程序(即删除 for...each 并将 opt_in_user 参数更改为@opt_in_users)并将收件人更改为密件抄送?

谢谢!

Controller

commmunity_users = UserCommunityRelation.find('community_id = ? and status = ?,'      current_community, "approved" )
@opt_in_users = User.find('opt_in = ?,' true)

@opt_in_users.each do |opt_in_user|
UserMailer.send_later(:deliver_announcement, opt_in_user)
end

UserMailer.rb

def announcement(opt_in_user)
mail(:to => "#{opt_in_user.username} <#{opt_in_user.email}>", :subject => "Huge Announcement!")
end

最佳答案

对于批量发送,您绝对应该通过服务发送(我们使用 Postbox,SendGrid 是另一种选择)。除了服务器上的负载之外,服务还可能更适合退回邮件、垃圾邮件拦截器等,并且它可能会提供额外的好处,例如跟踪。

Do most people use delayed jobs even for single recipient emails (ie a user registration confirmation)?

对于单用户电子邮件,我会在 Controller 中使用直接电子邮件。

Is my code the most efficient way to do a mass email?

您不希望让 Controller 操作管理任务排队,因为它会影响您的网站响应能力。使用 cron 作业和 rake 任务在后台执行。

If, for example, there's 1000 users. Does it make a big difference in resources (ie bandwidth, CPU, etc) if I send everyone the same email with a BCC. If so, do I just pass in a hash to the mailer (ie delete the for...each and change opt_in_user parameter to @opt_in_users) and change the recipient to bcc?

我认为 BCC 在资源使用方面很好,但是您的服务器会受到任何反弹的影响,而且这是一项需要管理的额外服务,因此,我会选择前面提到的服务

顺便说一句,对于 #each 与 for...each 问题,迭代器的成本将非常低,以至于不值得考虑 IMO。

关于ruby-on-rails-3 - 使用 Rails 3 群发电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com