1

次のコードは、ユーザーが1人の場合は機能するようですが、複数のユーザーの電子メールを切り捨てます。

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

これは、いくつかの電子メールを送信するための適切な方法ですか?

  • Ruby on Rails 3.2.2
  • Heroku
  • SendGrid
4

4 に答える 4

3

私はこれがあなたが探しているものだと思います:

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のSMTPAPIを使用して任意の数の受信者にメッセージが送信されます。詳細については、ドキュメントページをご覧ください。

sendgridrailsの宝石もご覧ください。

于 2012-09-13T23:51:22.553 に答える
1

メールアドレスを互いに隠すことが重要でない場合は、コンマ区切りの文字列で受信者を指定できます。

于 2012-09-13T22:07:10.870 に答える
1

複数のユーザーにメールを送信するには:配列を渡します

交換

:to => user.email

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

詳細>レールガイド

于 2012-09-13T20:55:12.067 に答える
0

問題は、メーラーの各インスタンスが1つの電子メールしか送信できないことであるように思われます。おそらく、メールオブジェクトがスコープから外れ、ガベージコレクターによってクリーンアップされています...

うまくいった解決策は、メーラーの外部のユーザーを繰り返し処理し、ユーザーごとに1回呼び出すことでした。遅いかもしれませんが、とにかくバックグラウンドで発生するはずなので、問題ありません。

于 2012-10-20T20:44:34.330 に答える