【问题标题】:Connection refused when using Pony Mail & Sinatra使用 Pony Mail 和 Sinatra 时连接被拒绝
【发布时间】:2014-10-08 19:58:18
【问题描述】:

我在让 Pony Mail gem 与我的 Sinatra 网站(部署在 Heroku 上)一起工作时遇到了很多麻烦。我的目标是有一个基本的联系表格,访问者可以在其中填写电子邮件和主题,他们的电子邮件和电话号码,此表格会将信息发送到客户的电子邮件。

这是表单的代码:

<form action="/emailform" method="post">
<p>We'd love to hear from you!</p>
<input type="text" placeholder="Your Full Name" name="full_name">
<input type="text" placeholder="Your E-mail        *required" name="email">
<input type="text" placeholder="Your Phone Number" name="phonenumber">
<input type="text" placeholder="Subject" name="subject">
<textarea rows="5" cols="30" name="comments" placeholder="Comments"></textarea>

<input type="submit" value="Submit" placeholder="Send">
</form>

这是我的 actions.rb 文件的代码(POST 请求)(3 个点代表更多参数/表单字段)

post '/emailform' do
Pony.mail to: 'xxx@gmail.com',
        from: 'xxx@gmail.com',
        subject: 'e-mail from: ' + params[:full_name] + params[:email],
        body: "subject: " + params[:subject] + "phone-number: " + params[:phonenumber]...
redirect '/'

end

post '/homeevaluation' do
  Pony.mail to: 'xxx@gmail.com',
        from: 'xxx@gmail.com',
        subject: 'Home Evaluation E-mail from: ' + params[:full_name],
        body: 'phone number: ' + params[:phonenumber] + params[:comments]...
redirect '/'
end

我现在遇到的错误是

Errno::ECONNREFUSED - Connection refused - connect(2):

我通过查看 Heroku 日志看到了这一点。

我一直在为这个问题苦苦挣扎,在网上找不到任何有用的信息。如果有人使用过 gem 或者知道另一种方法来完成相同的任务,我很想听听!

【问题讨论】:

    标签: ruby email heroku sinatra pony


    【解决方案1】:

    这看起来像是设置问题。您是否正在使用某种 Heroku 插件来发送电子邮件?我们使用 Sendgrid,所以我们需要在代码中的某处使用这些行:

    Pony.options[:via_options][:user_name] = ENV['SENDGRID_PASSWORD']
    Pony.options[:via_options][:password]  = ENV['SENDGRID_USERNAME']
    

    编辑:更多详细选项

    Pony.options = {
      via: :smtp,
      via_options: {
        address:              "smtp.sendgrid.net",
        port:                 "587",
        domain:               "heroku.com",
        authentication:       :plain,
        enable_starttls_auto: true,
        user_name:            "foo@heroku.com",
        password:             "foo"
      }
    }
    

    【讨论】:

    • 谢谢,所以我将 SendGrid 添加到 Heroku 应用程序中,并使用我的用户名和密码添加了这个代码块:Pony.options = { :via => :smtp, :via_options => { :address = > 'smtp.sendgrid.net', :port => '587', :domain => 'heroku.com', :user_name => ENV['SENDGRID_USERNAME'], :password => ENV['SENDGRID_PASSWORD'], : authentication => :plain, :enable_starttls_auto => true } } 这听起来很有希望,但不幸的是我仍然遇到同样的连接错误......
    • 好的,看看编辑,我添加了从控制台转储的全套选项。
    猜你喜欢
    • 2013-03-30
    • 1970-01-01
    • 2019-12-11
    • 2021-10-28
    • 2017-08-08
    • 2019-12-28
    • 2016-04-06
    • 1970-01-01
    • 2021-06-27
    相关资源
    最近更新 更多