发送多封电子邮件,其中Sendgrid无法使用X-SMTPAPI标头

时间:2017-07-20 16:51:40

标签: ruby-on-rails sendgrid sendgrid-api-v3 sendgrid-ruby

我一直在发送电子邮件如下:

def send
    ActionMailer::Base.mail(content_type: "text/html", from: "\"name\" <email@gmail.com>", to: "email2@gmail.com", subject: "subject", body: "<h1>Hi</h1>" , priority: 2).deliver
end

并且一直运作良好,但现在我想发送多封电子邮件,因为我需要处理1000多个用户。所以我一直在阅读我可以使用X-SMTPAPI标头完成此操作,所以我尝试了这个

  def send_all
    recipients = ["users1@gmail.com", "users2@gmail.com"]
    ActionMailer::Base.headers["X-SMTPAPI"] = { :to => recipients }.to_json
    ActionMailer::Base.mail(content_type: "text/html", from: "\"name\" <email@gmail.com>", to: "email2@gmail.com", subject: "subject", body: "<h1>Hi</h1>" , priority: 2).deliver
  end

但Sendgrid只是发送电子邮件至email2@gmail.com而不是标题。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我按照以下方式做了,我认为不是最佳解决方案,因为我再次加载Sendgrid配置,但它有效

def send
    Mail.defaults do
      delivery_method :smtp, { :address   => 'smtp.sendgrid.net',
                               :port      => 587,
                               :domain    => 'sendgrid.com',
                               :user_name => 'yourSendGridUsername',
                               :password  => 'yourSendGridPassword',
                               :authentication => 'plain',
                               :enable_starttls_auto => true }
    end

        recipients = ["users1@gmail.com", "users2@gmail.com"]

        mail = Mail.deliver do
          header['X-SMTPAPI'] =  { :to => recipients }.to_json
          to "ignore@gmail.com"
          from 'email@gmail.com'
          subject 'Ruby Example using X-SMTPAPI header'
          text_part do
            body 'You would put your content here, but I am going to say: Hello world!'
          end
          html_part do
            content_type 'text/html; charset=UTF-8'
            body '<b>Hello world!</b><br>Glad to have you here!'
          end
        end

end

我还需要在课堂上require 'mail'