如何使用SendGrid发送多封电子邮件?

时间:2012-09-13 20:44:46

标签: ruby-on-rails ruby-on-rails-3 heroku sendgrid

如果有一个用户,则以下代码似乎有效,但截断多个用户的电子邮件:

users.each do |user|
  mail(
    :to => user.email,
    :subject => 'Hi',
    :template_name => 'notification'
  ).deliver

这是发送几封电子邮件的正确方法吗?

  • Ruby on Rails 3.2.2
  • 的Heroku
  • SendGrid

4 个答案:

答案 0 :(得分:4)

我认为这就是你要找的东西:

def my_mailer_method
  users = User.find({ ... })

  headers['X-SMTPAPI'] = { :to => users.to_a }.to_json

  mail(
   :to => "this.will@be.ignored.com",
   :subject => "Hi",
   :template_name => "notification"
  ).deliver
end

这使用SendGrid的SMTP API向任意数量的收件人发送邮件。您可以在the docs page找到更多信息。

您可能还想查看sendgrid rails gem

答案 1 :(得分:1)

向多个用户发送电子邮件:传递数组

替换

:to => user.email

:to => users.map(&:email)

更多> rails guide

答案 2 :(得分:1)

如果您不能互相隐藏电子邮件地址,则可以用逗号分隔的字符串指定收件人。

答案 3 :(得分:0)

似乎问题是Mailer的每个实例只能发送一封电子邮件。也许邮件对象超出范围并被垃圾收集器清理......

有效的解决方案是迭代Mailer之外的用户,并为每个用户调用一次。它可能很慢,但它应该在后台发生,所以它很好。