2011-02-16 16 views

Respuesta

12

No hay joya para esto que yo sepa.

En realidad, debido a problemas de procesamiento, la mejor manera sería utilizar un proveedor externo de servicios de correo electrónico masivo a través de la API del proveedor.

Sin embargo, construir su propio sistema de boletines informativos no es diferente de construir su MVC regular. Solo se agregan los anuncios y las vistas de correo.

(1) Entonces crea un modelo que se ocupa de los datos de registro (: nombre,: correo electrónico,: etc ...) y el modelo que trata del boletín en sí.

(2) Controlador que se ocupa de él (CRUD) + (: enviar). El envío lleva a cada destinatario, envía los datos al programa de correo que crea el correo electrónico y luego lo envía.

def send 
@newsletter = Newsletter.find(:params['id']) 
@recipients = Recipient.all 
@recipients.each do |recipient| 
    Newsletter.newsletter_email(recipient, @newsletter).deliver 
end 
end 

(3) Mailer construye un correo electrónico, hace algunos cambios en cada correo electrónico si usted quiere hacer algo por el estilo y lo devuelve al controlador de acción envía para su entrega.

class Newsletter < ActionMailer::Base 
    default :from => "[email protected]", :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, necesita vistas de correo que son como visitas regulares. Bien en varias partes existe:

  • newsletter_email.html.erb (o haml)
  • newsletter_email.txt.erb

    Cuando se desea enviar HTML y texto sólo mensajes de correo electrónico. Las variables de instancia se definen en el correo de ofc.

Y ... eso es todo. Bueno, podría usar el trabajo retrasado para enviarlos, ya que enviar más de varios cientos de correos electrónicos puede llevar un tiempo. Varias veces ms n puede ser mucho tiempo.

Diviértete.

+0

encontró una alternativa al bucle: : to => Admin.all.map (&: email) .join (",") – montrealmike

+2

Bueno, si está enviando un correo electrónico a todos los administradores de su sistema que está perfectamente bien. Eso colocaría a todos los destinatarios en el campo "a". No es una buena idea que el boletín de noticias lo haga, excepto si prefiere compartir los datos privados de su suscriptor (direcciones de correo electrónico) con el resto del mundo. : bcc en lugar de: para que funcione bien si no está personalizando correos electrónicos. – Krule

0

No es una joya que yo sepa también y se basa en la respuesta de @ Krule, aquí hay un screencast de la configuración de los anuncios publicitarios en Rails.

How to create, preview and send email from your rails app

que estaba buscando algo similar cuando me encontré con esto. Creo que con un poco de personalización, también se puede usar fácilmente para crear correos electrónicos de newsletter.

¡Ahorre dinero! Gastar en otro lugar

Cuestiones relacionadas