在我看来,您正在尝试在提交表单后向一个人(或多个人)发送电子邮件。您可能正在将该表单中的信息保存到数据库中。我认为您对如何使用 Padrino 邮件程序有点困惑。请允许我澄清一下:为了使用 Padrino 的邮件功能发送包含完整内容的电子邮件,您必须创建一个 Padrino 邮件程序(我在下面对此进行了概述)。然后您必须配置该邮件程序,以便在调用它时可以将变量传递给它。然后可以在视图中使用这些变量,您的邮件程序在发送电子邮件之前将其呈现到电子邮件正文中。这是完成您正在尝试做的事情的一种方式,它可能是最直接的。您可以在“Mailer Usage”下找到有关此过程的更多信息你在你的问题中提供了。我在下面概述了一个示例用法,根据我认为您的需求量身定制。
指示
我将这个代码示例放在一起,并针对我的 AWS 账户进行了测试;它应该在生产中工作。
在您的app/app.rb
文件中,包括以下内容(您已经这样做了):
set :delivery_method, :smtp => {
:address => 'email-smtp.us-east-1.amazonaws.com',
:port => 587,
:user_name => 'SMTP_KEY_HERE',
:password => 'SMTP_SECRET_HERE',
:authentication => :plain,
:enable_starttls_auto => true
}
然后在中创建一个邮件程序app/mailers/affiliate.rb
:
# Defines the mailer
DemoPadrinoMailer.mailer :affiliate do
# Action in the mailer that sends the email. The "do" part passes the data you included in the call from your controller to your mailer.
email :send_email do |name, email|
# The from address coinciding with the registered/authorized from address used on SES
from 'your-aws-sender-email@yoursite.com'
# Send the email to this person
to 'recipient-email@yoursite.com'
# Subject of the email
subject 'Affiliate email'
# This passes the data you passed to the mailer into the view
locals :name => name, :email => email
# This is the view to use to redner the email, found at app/views/mailers/affiliate/send_email.erb
render 'affiliate/send_email'
end
end
Affiliate Mailer 的send_email
视图应位于app/view/mailers/affiliate/send_email.erb
并如下所示:
Name: <%= name %>
Email: <%= email %>
最后,您可以从您接受表单提交的任何方法(和控制器)内部调用您的邮件程序。请务必将字符串替换为实际的表单数据。在这个例子中,我使用了一个 POSTedcreate
动作,它没有保存任何数据(因此字符串带有假数据):
post :create do
# Deliver the email, pass the data in after everything else; here I pass in strings instead of something that was being saved to the database
deliver(:affiliate , :send_email, "John Doe", "john.doe@example.com")
end
我真诚地希望这对您与 Padrino 的旅程有所帮助,并欢迎来到 Stack Overflow 社区!
真挚地,
罗伯特·克鲁本斯皮斯