Никакой жемчужины для этого, о которой я знаю.
На самом деле, из-за проблем с обработкой, лучшим способом было бы использование внешнего поставщика услуг массовой рассылки через API поставщика.
Однако создание вашей собственной системы новостной рассылки ничем не отличается от создания вашей обычной MVC. Только дополнением являются почтовые программы и почтовые программы.
(1) Таким образом, вы создаете модель, которая работает с регистрационными данными (: name,: email,: и т. Д.), И модель, которая работает с самой новостной рассылкой.
(2) Контроллер, который имеет с ним дело (CRUD) + (: отправить). Send принимает каждого получателя, отправляет данные почтовой программе, которая создает электронную почту, а затем отправляет ее.
def send
@newsletter = Newsletter.find(:params['id'])
@recipients = Recipient.all
@recipients.each do |recipient|
Newsletter.newsletter_email(recipient, @newsletter).deliver
end
end
(3) Почтовик создает почтовое сообщение, вносит некоторые изменения в каждое электронное письмо, если вы хотите сделать что-то подобное, и возвращает его в действие контроллера, отправленное для доставки.
class Newsletter < ActionMailer::Base
default :from => "my_email@example.com", :content_type => "multipart/mixed"
def newsletter_email(recipient, newsletter)
# these are instance variables for newsletter view
@newsletter = newsletter
@recipient = recipient
mail(:to => recipient.email, :subject => newsletter.subject)
end
end
(4) Ofc, вам нужны почтовые представления, которые похожи на обычные представления. Ну в multipart есть:
И ... это так. Ну, вы могли бы использовать отложенную работу, чтобы отправить их, поскольку отправка более нескольких сотен электронных писем может занять некоторое время. Несколько мсек n могут быть много времени.
Веселитесь.