如何使用延迟作业每分钟向 5 个用户发送邮件
How to send mails to 5 user per minute using Delayed Job
我正在使用 rails 5.
我想从我的 rails 应用程序向 100 个用户发送电子邮件。
我已添加 delayed_job gem 以异步发送电子邮件。
代码如下:
控制器:
UserMailer.delay.send_mail(email, subject, body)
邮寄者:
def send_mail(email, subject, body)
mail(to: email, subject: subject, body: body, content_type: "text/html")
end
问。我需要知道,如何每分钟向 5 个用户发送邮件?
问。如果我用delayed_job给100个用户发邮件,那么在delayed_jobtable下就有100个工作。我可以批量发送邮件吗?
假设您想向每个收件人发送相同的主题和正文,我会使用 find_in_batches and the run_at 参数。
# UserMailer
def send_email_batch(emails, subject, body)
emails.each do |email|
send_email(email, subject, body)
end
end
# Controller
now = Time.current
User.find_in_batches(batch_size: 5).with_index do |users, batch|
UserMailer.delay(run_at: now + batch * 60).send_email_batch(users.map(&:email), subject, body)
end
我正在使用 rails 5.
我想从我的 rails 应用程序向 100 个用户发送电子邮件。
我已添加 delayed_job gem 以异步发送电子邮件。
代码如下:
控制器:
UserMailer.delay.send_mail(email, subject, body)
邮寄者:
def send_mail(email, subject, body)
mail(to: email, subject: subject, body: body, content_type: "text/html")
end
问。我需要知道,如何每分钟向 5 个用户发送邮件?
问。如果我用delayed_job给100个用户发邮件,那么在delayed_jobtable下就有100个工作。我可以批量发送邮件吗?
假设您想向每个收件人发送相同的主题和正文,我会使用 find_in_batches and the run_at 参数。
# UserMailer
def send_email_batch(emails, subject, body)
emails.each do |email|
send_email(email, subject, body)
end
end
# Controller
now = Time.current
User.find_in_batches(batch_size: 5).with_index do |users, batch|
UserMailer.delay(run_at: now + batch * 60).send_email_batch(users.map(&:email), subject, body)
end