Массовая электронная почта с Rails 3 - PullRequest
3 голосов
/ 19 января 2012

Я не только новичок в Rails, но и в разработке в целом, поэтому я прошу прощения, если это основной вопрос.У меня есть приложение, в котором я хочу отправлять массовые электронные письма (например, новостную рассылку) пользователям, которые подписались.У меня есть две проблемы: (1) мой код является наиболее эффективным способом обработки массовой почты (т.е. нужно ли использовать оператор for ... each) и (2) я читаю другие сообщения в переполнении стека, в которых говорится о важностипочтового сервера и использование отложенных заданий для отправки электронной почты.

Другие примечания:

Мои вопросы:

  1. Большинство людей используют отложенные вакансии даже дляписьма одного получателя (т.е. подтверждение регистрации пользователя)?
  2. Является ли мой код наиболее эффективным способом массовой рассылки?
  3. Если, например, 1000 пользователей.Имеет ли это большое значение в ресурсах (например, пропускная способность, процессор и т. Д.), Если я отправляю всем одно и то же письмо с BCC.Если да, могу ли я просто передать хэш почтовой программе (т. Е. Удалить for ... each и изменить параметр opt_in_user на @opt_in_users) и изменить получателя на bcc?

Спасибо!

Контроллер

commmunity_users = UserCommunityRelation.find('community_id = ? and status = ?,'      current_community, "approved" )
@opt_in_users = User.find('opt_in = ?,' true)

@opt_in_users.each do |opt_in_user|
  UserMailer.send_later(:deliver_announcement, opt_in_user)
end    

UserMailer.rb

def announcement(opt_in_user)
  mail(:to => "#{opt_in_user.username} <#{opt_in_user.email}>", :subject => "Huge Announcement!")
end

1 Ответ

2 голосов
/ 19 января 2012

Для массовой рассылки вам обязательно нужно отправить ее через службу (мы используем Postbox, SendGrid - еще один вариант).В дополнение к нагрузке на серверы, сервис также, вероятно, будет лучше подходить для отскоков, блокировщиков спама и т. Д., И, вероятно, будет предлагать дополнительные преимущества, такие как отслеживание.

Использует ли большинство людейотложенные задания даже для писем с одним получателем (т.е. подтверждение регистрации пользователя)?

Для писем с одним пользователем я бы пошел с прямыми электронными письмами в контроллере.

Является ли мой код наиболее эффективным способом массовой рассылки?

Вы не хотели бы, чтобы действие контроллера управляло постановкой в ​​очередь задач, поскольку это повлияетотзывчивость ваших сайтов.Используйте задание cron и задание rake, чтобы сделать это в фоновом режиме.

Если, например, есть 1000 пользователей.Имеет ли это большое значение в ресурсах (например, пропускная способность, процессор и т. Д.), Если я отправляю всем одно и то же письмо с BCC.Если это так, я просто передаю хэш почтовой программе (т. Е. Удаляю for ... each и меняю параметр opt_in_user на @opt_in_users) и меняю получателя на bcc?

Я думаю, что BCCштраф за использование ресурсов, но ваш сервер будет подвержен любым скачкам, и это дополнительный сервис для управления, поэтому я бы пошел с сервисом, как упоминалось ранее

Кстати, для #each vsдля ... каждого вопроса стоимость итератора будет настолько низкой, что об ИМО не стоит думать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...