【问题标题】:Sending mail with Pony and Sinatra使用 Pony 和 Sinatra 发送邮件
【发布时间】:2013-02-05 14:08:39
【问题描述】:

我正在尝试使用 sinatra 中的 Pony Gem 从联系表单(内置 HTML)发送电子邮件,我已按照文档进行操作,但一定缺少某些内容。

这是 Pony 配置

 get '/contact' do
  erb :contact, :layout => :layout
 end

 post '/contact' do
 require 'pony'
 Pony.mail({
:from => params[:name],
    :to => 'myemailaddress',
    :subject => params[:name] + "has contacted you via the Website",
    :body => params[:comment],
    :via => :smtp,
    :via_options => {
     :address              => 'smtp.gmail.com',
     :port                 => '587',
     :enable_starttls_auto => true,
     :user_name            => 'myemailaddress',
     :password             => 'mypassword',
     :authentication       => :plain, 
     :domain               => "localhost.localdomain" 
     }
    })
    redirect '/success' 
   end


   get('/success') do
@notification = "Thanks for your email. I'll be in touch soon."
erb :index, :layout => :layout
   end

所以点击提交后,联系页面会重新呈现,没有任何消息

这是我的提交按钮

 <button type="submit" class="btn" value="send">Submit</button>

我是不是错过了某个地方的触发器?

【问题讨论】:

    标签: ruby forms email sinatra pony


    【解决方案1】:

    你确定你有表单设置来做一个post吗?如果它似乎正在刷新页面,则可能是 form 标签设置不正确。此外,提交按钮应该是submit 类型的input 标签。 HTML 需要看起来像这样:

    <form action="/contact" method="post">
       <!-- your form elements go here -->
    
       <input type="submit" value="Sign in">
    </form>
    

    【讨论】:

    • 你在哪里对,我的愚蠢错误没有设置动作和发布......现在它不喜欢:主题 => 参数 [:名称] +“已通过网站与您联系”,它是抛出关于 + 的 nil 类错误
    • 嗯。似乎params[:name] 可能是nil。确保将name 设置为name 的表单元素。像这样:&lt;input name="name" type="text"&gt;。此外,如果您想防止nil 指针错误,您可以执行类似:subject =&gt; "#{params[:name] || 'Someone'} has contacted you via the Website" 的操作。如果未传入name 参数,这将使其默认为Someone。
    • 这正是我的 type = text, id = name, 搞混了,再次感谢
    • 如果未指定该属性,所有 HTTP 表单将自动假定为 method='POST'。如果未指定,表单也将 POST 到相同的 url,这也使得定义路由变得更加容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多