Using the mail form in rails for contact: Errno :: ECONNREFUSED: connection rejected - connect (2)

Before asking, I’m connected to the Internet. I tried using the form on my herokuapp and the form on my localhost and did not work. They should send to my email address. I also tried using it with the console ...

c = Contact.new(:name => 'Jose', :email => ' bob@bob.com ', :message => 'blah') c.deliver c = Contact.new(:name => 'Jose', :email => ' bob@bob.com ', :message => 'blah') c.deliver

That's where I get it ...

 Errno::ECONNREFUSED: Connection refused - connect(2) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:540:in `initialize' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:540:in `open' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:540:in `tcp_socket' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:550:in `block in do_start' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/timeout.rb:66:in `timeout' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:549:in `do_start' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/smtp.rb:519:in `start' from /Library/Ruby/Gems/2.0.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!' from /Library/Ruby/Gems/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery' from /Library/Ruby/Gems/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver' from /Library/Ruby/Gems/2.0.0/gems/actionmailer-4.0.3/lib/action_mailer/base.rb:456:in `block in deliver_mail' from /Library/Ruby/Gems/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications.rb:159:in `block in instrument' from /Library/Ruby/Gems/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications/instrumenter.rb:20:in `instrument' from /Library/Ruby/Gems/2.0.0/gems/activesupport-4.0.3/lib/active_support/notifications.rb:159:in `instrument' from /Library/Ruby/Gems/2.0.0/gems/actionmailer-4.0.3/lib/action_mailer/base.rb:454:in `deliver_mail' from /Library/Ruby/Gems/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:232:in `deliver' from /Library/Ruby/Gems/2.0.0/gems/mail_form-1.5.0/lib/mail_form/delivery.rb:151:in `deliver!' from /Library/Ruby/Gems/2.0.0/gems/activesupport-4.0.3/lib/active_support/callbacks.rb:386:in `_run__1162424905731419627__deliver__callbacks' from /Library/Ruby/Gems/2.0.0/gems/activesupport-4.0.3/lib/active_support/callbacks.rb:80:in `run_callbacks' from /Library/Ruby/Gems/2.0.0/gems/mail_form-1.5.0/lib/mail_form/shim.rb:49:in `deliver' from (irb):2 from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.3/lib/rails/commands/console.rb:90:in `start' from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.3/lib/rails/commands/console.rb:9:in `start' from /Library/Ruby/Gems/2.0.0/gems/railties-4.0.3/lib/rails/commands.rb:62:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>'irb(main):003:0> 

My code is in Contact.rb

 class Contact < MailForm::Base attribute :name, :validate => true attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i attribute :message attribute :nickname, :captcha => true # Declare the e-mail headers. It accepts anything the mail method # in ActionMailer accepts. def headers { :subject => "Someone contacted you on your website!", :to => " myemail@gmail.com ", :from => %("#{name}" <#{email}>) } end end 

My contact form in haml

 .row .large-8.small-centered.columns %div{align: "center"} %h2 Send A message to Us = form_for @contact, :html => {:class => 'form-horizontal' } do |f| .row .large-12.columns %h2 Name = f.text_field :name, :required => true, :placeholder => 'John Smith' .row .large-12.columns %h2 Email = f.text_field :email, :required => true, :placeholder => ' You@example.com ' .row .large-12.columns %h2 Message = f.text_area :message, :as => :text, :required => true, :size => "30x10" .hidden = f.text_field :nickname, :hint => 'Leave this field blank!' %div = f.submit 'Send message' 

There is also a gym

 gem 'mail_form' gem 'simple_form' 

routes.rb

  match '/contacts', to: 'contacts#new', via: 'get' resources "contacts", only: [:new, :create] 

contact controller

 class ContactsController < ApplicationController def new @contact = Contact.new end def create @contact = Contact.new(params[:contact]) @contact.request = request if @contact.deliver redirect_to(root_path, :notice => "Thank you for contacting me. I will reply shortly!") else flash.now[:error] = 'Cannot send message.' render :new end end end 

My development configuration (for localhost)

  config.action_mailer.raise_delivery_errors = true config.action_mailer.default_url_options = { :host => 'localhost:3000' } config.action_mailer.delivery_method = :smtp 

My production (for Heroku)

 config.action_mailer.default_url_options = { :host => 'myapp.herokuapp.com' } config.action_mailer.delivery_method = :smtp config.action_mailer.perform_deliveries = true config.action_mailer.raise_delivery_errors = false config.action_mailer.default :charset => "utf-8" config.action_mailer.smtp_settings = { address: "smtp.gmail.com", port: 587, domain: ENV["GMAIL_DOMAIN"], authentication: "plain", enable_starttls_auto: true, user_name: ENV["GMAIL_USERNAME"], password: ENV["GMAIL_PASSWORD"] } 

I really don't know why he does this, and other explanations for this error here do not work for me.

+2
source share
2 answers

I was able to fix this problem. Stupidly, I forgot to add the gmail email program. I did not understand that I needed this with a mail form. The tutorial that I used never put in this type of information.

 config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'gmail.com', user_name: ' myname@gmail.com ', password: 'mypassword', authentication: 'plain', enable_starttls_auto: true } 
+2
source

make rake db: migrate I spent one hour on it and had this question Errno :: ECONNREFUSED: Connection refused - connected (2)

and then when I put rake db: migrate and restart the server again, it worked

+1
source

Source: https://habr.com/ru/post/1271476/


All Articles