按照此处的说明操作:http://www.padrinorb.com/guides/padrino-mailer
我在app.rb文件中添加了传递方法:
class OscarAffiliate < Padrino::Application
register Padrino::Rendering
register Padrino::Mailer
register Padrino::Helpers
enable :sessions
set :delivery_method, :smtp => {
:address => "email-smtp.us-east-1.amazonaws.com",
:port => 587,
:user_name => 'AKIAIQ5YXCWFKFXFFRZA',
:password => 'AqMNMFecKSYR/TRu8kJgocysAL5SmIUsu2i8u/KAfeF/',
:authentication => :plain,
:enable_starttls_auto => true
}
但是通过Padrino和Mailer一代的产生,我没有推荐的“会话”控制器,它应该属于:
post :create do
email(:from => "tony@reyes.com", :to => "john@smith.com", :subject => "Welcome!", :body=>"Body")
end
我错过了什么吗?
我在办公室有一个基本数据收集表单,只需要一封电子邮件发送给5个收件人,邮件正文中包含所有表单字段。
由于
答案 0 :(得分:1)
在我看来,您在提交表单后尝试通过电子邮件发送给某个人(或多个人)。您可能正在将该表单中的信息保存到数据库中。我认为你对如何使用Padrino邮件有点困惑。请允许我澄清一下:为了发送电子邮件,使用Padrino的邮件程序功能,以及完整的内容,您必须创建一个Padrino邮件程序(我在下面概述了这一点)。然后,您必须配置该邮件程序,以便在调用它时可以将变量传递给它。然后可以在视图中使用这些变量,邮件程序会在发送电子邮件之前将其呈现到电子邮件正文中。这是完成你想要做的事情的一种方式,它可能是最直接的。您可以在问题中提供的help page下的“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 %>
最后,您可以从您接受表单提交的任何方法(和控制器)内部调用您的邮件程序。务必使用实际表单数据替换字符串。在这个例子中,我使用了POST create
动作,它没有保存任何数据(因此带有假数据的字符串):
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社区!
此致
Robert Klubenspies