如果有一个用户,则以下代码似乎有效,但截断多个用户的电子邮件:
users.each do |user|
mail(
:to => user.email,
:subject => 'Hi',
:template_name => 'notification'
).deliver
这是发送几封电子邮件的正确方法吗?
答案 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)
答案 2 :(得分:1)
如果您不能互相隐藏电子邮件地址,则可以用逗号分隔的字符串指定收件人。
答案 3 :(得分:0)
似乎问题是Mailer的每个实例只能发送一封电子邮件。也许邮件对象超出范围并被垃圾收集器清理......
有效的解决方案是迭代Mailer之外的用户,并为每个用户调用一次。它可能很慢,但它应该在后台发生,所以它很好。