次のコードは、ユーザーが1人の場合は機能するようですが、複数のユーザーの電子メールを切り捨てます。
users.each do |user|
mail(
:to => user.email,
:subject => 'Hi',
:template_name => 'notification'
).deliver
これは、いくつかの電子メールを送信するための適切な方法ですか?
- Ruby on Rails 3.2.2
- Heroku
- SendGrid
次のコードは、ユーザーが1人の場合は機能するようですが、複数のユーザーの電子メールを切り捨てます。
users.each do |user|
mail(
:to => user.email,
:subject => 'Hi',
:template_name => 'notification'
).deliver
これは、いくつかの電子メールを送信するための適切な方法ですか?
私はこれがあなたが探しているものだと思います:
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の宝石もご覧ください。
メールアドレスを互いに隠すことが重要でない場合は、コンマ区切りの文字列で受信者を指定できます。
問題は、メーラーの各インスタンスが1つの電子メールしか送信できないことであるように思われます。おそらく、メールオブジェクトがスコープから外れ、ガベージコレクターによってクリーンアップされています...
うまくいった解決策は、メーラーの外部のユーザーを繰り返し処理し、ユーザーごとに1回呼び出すことでした。遅いかもしれませんが、とにかくバックグラウンドで発生するはずなので、問題ありません。