Отказ в подключении при использовании Pony Mail и Sinatra

У меня много проблем с тем, чтобы заставить Pony Mail работать с моим веб-сайтом 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>

Вот код моего файла action.rb (запрос POST) (3 точки представляют дополнительные поля params/form)

post '/emailform' do
Pony.mail to: '[email protected]',
        from: '[email protected]',
        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: '[email protected]',
        from: '[email protected]',
        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.

Я боролся с этой проблемой некоторое время и не могу найти никакой полезной информации в Интернете. Если кто-нибудь использовал драгоценный камень или знает другой способ выполнить ту же задачу, я хотел бы услышать это!


person meganlouise    schedule 08.10.2014    source источник


Ответы (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:            "[email protected]",
    password:             "foo"
  }
}
person Ollie    schedule 08.10.2014
comment
Спасибо, поэтому я добавил 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 } } Это звучало очень многообещающе, но, к сожалению, я все еще получаю ту же ошибку подключения... - person meganlouise; 09.10.2014
comment
Хорошо, взгляните на редактирование, я добавил полный набор опций, выгруженных из консоли. - person Ollie; 09.10.2014