I have a simple form set up for a contact object
<%= simple_form_for @contact do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :message %>
<%= f.button :submit %>
<% end %>
class Contact < MailForm::Base
attribute :name, validate: true
attribute :email, validate: true
attribute :message
def headers
{
subject: "My Contact Form",
to: '#####gmail.com',
from: %("#{name}" <#{email}>)
}
end
end
the object is created as expected but upon sending the mail in the contact controller using .deliver
class ContactsController < ApplicationController
def create
@contact = Contact.new()
@contact.name = [:name]
@contact.email = [:email]
@contact.message = [:message]
if @contact.deliver
render json: {message: "Email sent successfully"}
else
render json: @contact.errors
end
end
end
I get the following error - EOFError in ContactsController#create
When I have tried to call .deliver on a contact object within IRB it provides me with the following
Rendering /home/#####/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/mail_form-1.10.0/lib/mail_form/views/mail_form/contact.erb
Rendered /home/#####/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/mail_form-1.10.0/lib/mail_form/views/mail_form/contact.erb (Duration: 7.3ms | Allocations: 1861)
MailForm::Notifier#contact: processed outbound mail in 62.3ms
Delivered mail [email protected] (192.0ms)
Date: Sat, 22 Apr 2023 20:00:30 +0100
From: ##### <#####@hello.com>
To: #############@gmail.com
Message-ID: <[email protected]>
Subject: My Contact Form
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
<h4 style="text-decoration:underline">My Contact Form</h4>
<p><b>Name:</b>
#####</p>
<p><b>Email:</b>
#####@hello.com</p>
<p><b>Message:</b>
#####</p>
/home/#####/.rbenv/versions/3.2.2/lib/ruby/gems/3.2.0/gems/net-protocol-0.2.1/lib/net/protocol.rb:237:in `rbuf_fill': end of file reached (EOFError)
my smtp setup in development.rb is as follows
config.action_mailer.perform_deliveries = true
config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp-relay.gmail.com',
port: 587,
domain: '@gmail.com',
authentication: 'plain',
enable_starttls_auto: true,
user_name: ENV['username'],
password: ENV['password']
I appreciate this is a lot of code to dump on here but I am really at my wits end with this problem. If anyone needs any further information to help please let me know.
So far I have tried looking into the EOF error but have really had limited luck as the error message is quite brief. I have treid changing the port as well as the local host address but nothing seems to work.
The parameters on the error page are as follows
{"authenticity_token"=>"[FILTERED]", "contact"=>{"name"=>"fff", "email"=>"ffff", "message"=>"fffff"}, "commit"=>"Create Contact"}
full stack trace:
net-protocol (0.2.1) lib/net/protocol.rb:237:in `rbuf_fill'
net-protocol (0.2.1) lib/net/protocol.rb:199:in `readuntil'
net-protocol (0.2.1) lib/net/protocol.rb:209:in `readline'
net-smtp (0.3.3) lib/net/smtp.rb:1057:in `recv_response'
net-smtp (0.3.3) lib/net/smtp.rb:1042:in `block in getok'
net-smtp (0.3.3) lib/net/smtp.rb:1067:in `critical'
net-smtp (0.3.3) lib/net/smtp.rb:1040:in `getok'
net-smtp (0.3.3) lib/net/smtp.rb:935:in `helo'
net-smtp (0.3.3) lib/net/smtp.rb:703:in `do_helo'
net-smtp (0.3.3) lib/net/smtp.rb:660:in `do_start'
net-smtp (0.3.3) lib/net/smtp.rb:611:in `start'
mail (2.8.1) lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
mail (2.8.1) lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
mail (2.8.1) lib/mail/message.rb:2145:in `do_delivery'
mail (2.8.1) lib/mail/message.rb:253:in `block in deliver'
actionmailer (7.0.4.3) lib/action_mailer/base.rb:588:in `block in deliver_mail'
activesupport (7.0.4.3) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.4.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.4.3) lib/active_support/notifications.rb:206:in `instrument'
actionmailer (7.0.4.3) lib/action_mailer/base.rb:586:in `deliver_mail'
mail (2.8.1) lib/mail/message.rb:253:in `deliver'
actionmailer (7.0.4.3) lib/action_mailer/message_delivery.rb:119:in `block in deliver_now'
actionmailer (7.0.4.3) lib/action_mailer/rescuable.rb:17:in `handle_exceptions'
actionmailer (7.0.4.3) lib/action_mailer/message_delivery.rb:118:in `deliver_now'
mail_form (1.10.0) lib/mail_form/delivery.rb:158:in `deliver!'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:400:in `block in make_lambda'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:236:in `block in halting_and_conditional'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:599:in `block in invoke_after'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:599:in `each'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:599:in `invoke_after'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:108:in `run_callbacks'
mail_form (1.10.0) lib/mail_form/shim.rb:49:in `deliver'
app/controllers/contacts_controller.rb:7:in `create'
actionpack (7.0.4.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.4.3) lib/abstract_controller/base.rb:215:in `process_action'
actionpack (7.0.4.3) lib/action_controller/metal/rendering.rb:53:in `process_action'
actionpack (7.0.4.3) lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
actiontext (7.0.4.3) lib/action_text/rendering.rb:20:in `with_renderer'
actiontext (7.0.4.3) lib/action_text/engine.rb:69:in `block (4 levels) in <class:Engine>'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:127:in `instance_exec'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.4.3) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.4.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.4.3) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.4.3) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.4.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.4.3) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.4.3) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.4.3) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.4.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.4.3) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.4.3) lib/action_view/rendering.rb:39:in `process'
actionpack (7.0.4.3) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.4.3) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.4.3) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.4.3) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.4.3) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.4.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.4.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.4.3) lib/action_dispatch/routing/route_set.rb:852:in `call'
rack (2.2.6.4) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.6.4) lib/rack/etag.rb:27:in `call'
rack (2.2.6.4) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.6.4) lib/rack/head.rb:12:in `call'
actionpack (7.0.4.3) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
actionpack (7.0.4.3) lib/action_dispatch/http/content_security_policy.rb:36:in `call'
rack (2.2.6.4) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.6.4) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/cookies.rb:704:in `call'
activerecord (7.0.4.3) lib/active_record/migration.rb:603:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.4.3) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.4.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
web-console (4.2.0) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.2.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.2.0) lib/web_console/middleware.rb:17:in `catch'
web-console (4.2.0) lib/web_console/middleware.rb:17:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
railties (7.0.4.3) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.4.3) lib/rails/rack/logger.rb:25:in `block in call'
activesupport (7.0.4.3) lib/active_support/tagged_logging.rb:99:in `block in tagged'
activesupport (7.0.4.3) lib/active_support/tagged_logging.rb:37:in `tagged'
activesupport (7.0.4.3) lib/active_support/tagged_logging.rb:99:in `tagged'
railties (7.0.4.3) lib/rails/rack/logger.rb:25:in `call'
sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.6.4) lib/rack/method_override.rb:24:in `call'
rack (2.2.6.4) lib/rack/runtime.rb:22:in `call'
activesupport (7.0.4.3) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/server_timing.rb:61:in `block in call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/server_timing.rb:26:in `collect_events'
actionpack (7.0.4.3) lib/action_dispatch/middleware/server_timing.rb:60:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/static.rb:23:in `call'
rack (2.2.6.4) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.4.3) lib/action_dispatch/middleware/host_authorization.rb:137:in `call'
railties (7.0.4.3) lib/rails/engine.rb:530:in `call'
puma (5.6.5) lib/puma/configuration.rb:252:in `call'
puma (5.6.5) lib/puma/request.rb:77:in `block in handle_request'
puma (5.6.5) lib/puma/thread_pool.rb:340:in `with_force_shutdown'
puma (5.6.5) lib/puma/request.rb:76:in `handle_request'
puma (5.6.5) lib/puma/server.rb:443:in `process_client'
puma (5.6.5) lib/puma/thread_pool.rb:147:in `block in spawn_thread'
It seems yo are running your server on your own desktop computer rather than a server. Here, it appears that "something" breaks the TCP connection between your desktop and gmail's smtp gateway just after your Rails app has sent the SMTP
helocommand.This is often caused by some firewall or virus scanner on your desktop or within your (corporate) network which denies sending of outbound mails. It might also be required to sent mails via a corporate gateway in your network.
In any case, this does not appear to be caused by your app or gmail but your network settings or those of your (corporate) network.