在我的Rails 3项目中,我想发送一些简单的通知电子邮件。我不需要为它们制作模板或做任何逻辑。我只是想从系统的各个地方解雇它们。
如果我在任意ruby脚本中执行此操作,我将使用pony。但是,我仍然希望使用rails邮件设施和配置,这样我就可以获得与系统中其余邮件相同的可靠性和设置。
最简单的方法是什么?理想情况下会有一些像
这样的方法ActionMailer.send(:to => 'foo@example.com', :subject =>"the subject", :body =>"this is the body")
答案 0 :(得分:100)
在没有模板的情况下在rails 3中发送邮件的最简单方法是直接调用mail
ActionMailer::Base
方法,然后调用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部分的多部分/备用电子邮件的想法。
答案 1 :(得分:10)
Here是使用render
方法的Rails指南中的一个小例子。我没有尝试过,但如果它在cotrollers中用作render
,那么你可以使用:
render :text => "Your message"
或
render :text => my_message
其中my_message
是参数。
你可以将它包装在一个方法中,你可以从你想要的每个地方打电话。
在这个版本的Rails中,我必须这样做:
def raw_email( email, subject, body )
mail(
:to => email,
:subject => subject
) do |format|
format.text { render :text => body }
end
end
答案 2 :(得分:7)
您可以尝试这样的事情:
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