1

如果有一个用户,以下代码似乎可以工作,但会为多个用户截断电子邮件:

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

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

  • Ruby on Rails 3.2.2
  • Heroku
  • 发送网格
4

4 回答 4

3

I think this is what you're looking for:

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

This sends a message to any number of recipients use the SendGrid's SMTP API. You can find further information on the docs page.

You might also want to take a look at the sendgrid rails gem

于 2012-09-13T23:51:22.553 回答
1

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

代替

:to => user.email

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

更多 >导轨

于 2012-09-13T20:55:12.067 回答
1

如果对彼此隐藏电子邮件地址并不重要,您可以在逗号分隔的字符串中指定收件人。

于 2012-09-13T22:07:10.870 回答
0

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

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

于 2012-10-20T20:44:34.330 回答