使用rails中的发送网格批量发送电子邮

时间:2014-11-24 01:26:48

标签: ruby-on-rails http-headers smtp sendgrid bulk-email

上下文:

我需要使用rails应用中的发送网格发送批量电子邮件。 我将向大约300名订阅者发送电子邮件。 我已经读过它可以使用

完成
headers["X-SMTPAPI"] = { :to => array_of_recipients }.to_json

我试过了。

以下是我的ActionMailer:

class NewJobMailer < ActionMailer::Base
  default from: "from@example.com"

  def new_job_post(subscribers)
    @greeting = "Hi"
    headers['X-SMTPAPI'] = { :to => subscribers.to_a }.to_json
    mail(
    :to => "this.will@be.ignored.com",
    :subject => "New Job Posted!"
    )

  end

end

我从控制器中调用此邮件程序方法

..
   @subscribers = Subscriber.where(activated: true)
   NewJobMailer.new_job_post(@subscribers).deliver
..

send-grid的配置在config / production.rb文件中指定并且是正确的,因为我能够发送帐户激活电子邮件。

问题:

该应用程序工作正常,不会在任何地方崩溃,但电子邮件不会被发送出去。 我猜猜标题配置没有被传递? 我怎么能纠正这个?

更新:

我在发送网格信息中心检查了电子邮件活动。 以下是其中一封已删除电子邮件的快照: enter image description here

1 个答案:

答案 0 :(得分:4)

您正在使用

抓取一组ActiveRecord对象
@subscribers = Subscriber.where(activated: true)

并将其传递给smtpapi标头。您需要提取这些ActiveRecord对象的电子邮件地址。

根据您所谓的email字段,可以使用

完成此操作
headers['X-SMTPAPI'] = { :to => subscribers.map(&:email) }.to_json