Я недавно закончил буткемп, поэтому я все еще пытаюсь обернуть голову вокруг вещей.
Я пытаюсь реализовать контактную форму в своем приложении rails, которое я использовал mail_form жемчужина вместе с сендгридом. Я считаю, что правильно установил SMTP. Но когда я пытаюсь отправить форму, я получаю эту ошибку:
2020-05-01T21:23:04.573941+00:00 app[web.1]: I, [2020-05-01T21:23:04.573868 #4] INFO -- : [268934ad-22d8-4836-b22a-3f130941a309] Parameters: {"utf8"=>"✓", "authenticity_token"=>"==auth==", "contact"=>{"email"=>"customer@gmail.com", "name"=>"josejose", "message"=>"jose here, first mesage"}, "commit"=>"Enviar Mensaje"}
2020-05-01T21:23:04.584676+00:00 app[web.1]: D, [2020-05-01T21:23:04.584577 #4] DEBUG -- : [268934ad-22d8-4836-b22a-3f130941a309] MailForm::Notifier#contact: processed outbound mail in 3.1ms
2020-05-01T21:23:04.585021+00:00 app[web.1]: I, [2020-05-01T21:23:04.584935 #4] INFO -- : [268934ad-22d8-4836-b22a-3f130941a309] Completed 500 Internal Server Error in 11ms (ActiveRecord: 0.0ms)
2020-05-01T21:23:04.586063+00:00 app[web.1]: F, [2020-05-01T21:23:04.585975 #4] FATAL -- : [268934ad-22d8-4836-b22a-3f130941a309]
2020-05-01T21:23:04.586210+00:00 app[web.1]: F, [2020-05-01T21:23:04.586127 #4] FATAL -- : [268934ad-22d8-4836-b22a-3f130941a309] NoMethodError (undefined method `charset=' for #<SendGrid::Mail:0x00007f61a50f42c8>):
2020-05-01T21:23:04.586292+00:00 app[web.1]: F, [2020-05-01T21:23:04.586221 #4] FATAL -- : [268934ad-22d8-4836-b22a-3f130941a309]
2020-05-01T21:23:04.586378+00:00 app[web.1]: F, [2020-05-01T21:23:04.586314 #4] FATAL -- : [268934ad-22d8-4836-b22a-3f130941a309] app/controllers/contacts_controller.rb:12:in `create'
2020-05-01T21:23:04.587648+00:00 heroku[router]: at=info method=POST path="/contacts" host=www.centraldehierros.com request_id=268934ad-22d8-4836-b22a-3f130941a309 fwd="80.4.60.53" dyno=web.1 connect=1ms service=19ms status=500 bytes=1827 protocol=http
Я следовал руководству по гемам mail_form на github и использовал this как руководство по настройке с помощью sendgrid .
в моем файле contact.rb у меня есть
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
# attribute :file, :attachment => true
attribute :message
attribute :nickname, :captcha => true
def headers
{
:subject => "My Contact Form",
:to => "contact@app.com",
:from => %("#{name}" <#{email}>)
}
end
контроллер контактов
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
@contact.request = request
respond_to do |format|
if @contact.deliver
format.html { redirect_to new_contact_path, alert: 'Your message was sent successfully.
We will get back to you shortly.' }
flash.now[:error] = nil
else
format.html { render :new }
flash.now[:error] = 'Cannot send message'
end
end
end
Настройки SMTP в # config / environment / development.rb
config.action_mailer.default_url_options = { host: "http://www.app.com" }
config.action_mailer.delivery_method = :smtp
ActionMailer::Base.smtp_settings= {
:address => 'smtp.sendgrid.net',
:port => '465',
:authentication => :plain,
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'http://www.app.com',
:enable_starttls_auto => true
}
Я также установил все свои необходимые конфиги в моем .env
Я попытался выполнить поиск по inte rnet и стеку, но не смог найти ничего, что связано с этой ошибкой.
В настоящее время используются рельсы 5.2.1, ruby 2.6.5