如何在没有模板的情况下使用rails发送邮件?

在我的Rails 3项目中,我想发送一些简单的通知邮件。 我不需要为他们制作模板或做任何逻辑。 我只是想从系统中的各个地方把它们烧掉。

如果我在一个任意的ruby脚本中这样做,我会使用小马 。 不过,我仍然想使用rails的邮件设备和configuration,这样我就可以获得与我系统中其他邮件相同的可靠性和设置。

什么是最简单的方法来做到这一点? 理想情况下,会有一些方法

ActionMailer.send(:to => 'foo@example.com', :subject =>"the subject", :body =>"this is the body") 

在没有模板的情况下在rails 3中发送邮件最简单的方法是直接调用ActionMailer::Basemail方法,然后是deliver方法,

例如,以下将发送一个纯文本电子邮件:

 ActionMailer::Base.mail(from: "me@example.com", to: "you@example.com", subject: "test", body: "test").deliver 

http://api.rubyonrails.org/classes/ActionMailer/Base.html#method-i-mail为您提供了所有的标题选项,以及如何使用text / plain和text / html发送multipart / alternative email的想法部分直接。

这里是使用render方法的Rails指南的一个小例子。 我没有尝试,但如果它作为在cotrollers render作品,那么你可以使用:

 render :text => "Your message" 

要么

 render :text => my_message 

my_message是一个参数。

你可以把它包装在一个你可以从每个你想要的地方打电话的方法。

更新了Rails 3.2.8

在这个版本的Rails中,我必须这样做:

 def raw_email( email, subject, body ) mail( :to => email, :subject => subject ) do |format| format.text { render :text => body } end end 

你可以尝试这样的事情:

 class Notifier < ActionMailer::Base def send_simple_message(options) mail(options.except(:body)) do |format| format.text { render :text => options[:body] } end.deliver end end