Ruby on rails 如何使用rails发送没有模板的邮件?
在我的Rails3项目中,我想发送一些简单的通知电子邮件。我不需要为他们制作模板或做任何逻辑。我只想从系统的各个地方发射它们 如果我在任意ruby脚本中执行此操作,我将使用。但是,我仍然希望使用rails邮件设施和配置,以便获得与系统中其余邮件相同的可靠性和设置 最简单的方法是什么?理想情况下会有类似的方法Ruby on rails 如何使用rails发送没有模板的邮件?,ruby-on-rails,ruby,email,actionmailer,Ruby On Rails,Ruby,Email,Actionmailer,在我的Rails3项目中,我想发送一些简单的通知电子邮件。我不需要为他们制作模板或做任何逻辑。我只想从系统的各个地方发射它们 如果我在任意ruby脚本中执行此操作,我将使用。但是,我仍然希望使用rails邮件设施和配置,以便获得与系统中其余邮件相同的可靠性和设置 最简单的方法是什么?理想情况下会有类似的方法 ActionMailer.send(:to => 'foo@example.com', :subject =>"the subject", :body =>"this is
ActionMailer.send(:to => 'foo@example.com', :subject =>"the subject", :body =>"this is the body")
这是Rails指南中的一个小例子,它使用了render
方法。我没有尝试过,但是如果它在cotrollers中作为渲染
,那么您可以使用:
render :text => "Your 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
您可以尝试以下方法:
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
类通知程序在rails 3中不使用模板发送邮件的最简单方法是调用
ActionMailer::Base的mail
方法,然后直接调用deliver
方法
例如,以下内容将发送纯文本电子邮件:
ActionMailer::Base.mail(
from: "me@example.com",
to: "you@example.com",
subject: "test",
body: "test"
).deliver
提供所有标题选项,以及如何直接发送包含text/plain和text/html部分的多部分/备选电子邮件的想法。Rails 5用户可能会发现接受的答案(使用format.text{…}
)不起作用;至少我得到了一个例外,因为Rails正在寻找一个视图
事实证明,Rails指南中有一个部分名为,只需为mail()
提供:content\u type和:body选项即可。例如:
class UserMailer < ApplicationMailer
def welcome_email
mail(to: params[:user].email,
body: params[:email_body],
content_type: "text/html",
subject: "Already rendered!")
end
end
class UserMailer
您使用的是Rails 2.3还是3.0?我考虑过这一点。它非常简单,但仍然需要使用方法创建ActionMailer
模型。我希望有更简单的东西,但如果没有,这是最好的选择。如果你正在发送邮件到gmail,别忘了从邮件头添加。我花了一个小时弄清楚为什么我的邮件没有送达,这就是原因。如果ActionMailer附带了这样一个“默认通知程序”,那就太酷了。也许我应该做一块宝石……我认为,deliver
不应该是梅勒的方法。相反,它应该在使用mailer时调用,就像默认的mailer usageThis非常棒,我可以确认它在Rails 4和Rails 5.1.0中也可以工作