在rails3中制作简报的最佳方式是什么?

时间:2011-02-16 15:28:10

标签: ruby-on-rails ruby-on-rails-3

有没有宝石可以做到这一点,如果没有,最好的方法是什么。我假设我将电子邮件存储在时事通讯数据库中,并且需要一个可以同时通过电子邮件发送给所有人的表单。谢谢!

3 个答案:

答案 0 :(得分:12)

我知道没有宝石。

实际上,由于处理问题,最好的方法是通过提供商的API使用外部批量电子邮件服务提供商。

但是,构建自己的新闻稿系统与构建常规MVC没有什么不同。只有添加邮件和邮件的视图。

(1)因此,您创建的模型处理注册数据(:name,:email,:etc ...)和处理简报本身的模型。

(2)处理它的控制器(CRUD)+(:发送)。发送接收每个收件人,将数据发送到邮件程序,然后发送它。

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

(3)Mailer会构建一封电子邮件,如果您想要执行类似的操作,请在每封电子邮件中进行一些更改,然后将其返回到控制器操作发送以进行传递。

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,您需要与常规视图一样的邮件视图。好的多部分有:

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

    如果您只想发送html和纯文本电子邮件。实例变量在mailer ofc中定义。

而且......就是这样。那么你可以使用延迟工作发送它们,因为发送超过几百封电子邮件可能需要一段时间。几个ms时间n可能需要很长时间。

玩得开心。

答案 1 :(得分:3)

请检查maktoub gem上面有blog post

答案 2 :(得分:0)

我也不知道宝石,并以@Krule的答案为基础,这里是在Rails中设置邮件的截屏视频。

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

当我发现这个时,我正在寻找类似的东西。我认为通过一些自定义,它也可以轻松地用于创建新闻通讯电子邮件。

省钱!花在其他地方。