使用Pony Mail&西纳特拉

时间:2014-10-08 19:58:18

标签: ruby email heroku sinatra pony

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

以下是表单的代码:

<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日志来看到这一点。

我一直在努力解决这个问题,并且无法在线找到任何有用的信息。如果有人使用过宝石或者知道另一种方式来完成相同的任务,我很乐意听到它!

1 个答案:

答案 0 :(得分:0)

这看起来像是一个设置问题。您是否使用某种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"
  }
}