0

按照此处的说明操作: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 个收件人发送一封电子邮件,其中包含邮件正文中的所有表单字段。

谢谢

4

1 回答 1

1

在我看来,您正在尝试在提交表单后向一个人(或多个人)发送电子邮件。您可能正在将该表单中的信息保存到数据库中。我认为您对如何使用 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 社区!

真挚地,

罗伯特·克鲁本斯皮斯

于 2012-05-24T01:15:54.163 回答