Я использую gem griddler с gem griddler-sendgrid в моем приложении ruby on rails для входящих писем.
Он отлично работает на промежуточном сервере, но возникает проблема с производственным сервером. В моей конфигурации нет проблем, я подтвердил это с помощью sendgrid support
. Они сказали мне использовать только DKIM validation
и удалить SPF check
из проверок.
Я проверил оба камня на это, но не нашел ничего относящегося к этому.
Вот подробности моей конфигурации драгоценного камня:
ruby '2.2.3'
gem 'rails', '4.1.2'
gem 'griddler', '1.4.0'
gem 'griddler-sendgrid', '1.0.0'
Может ли кто-нибудь подсказать мне, как я могу пропустить проверку SPF в gem 'griddler-sendgrid'?
Заранее спасибо!
Пробовали получить emails_controller.rb с github?
https://github.com/oughttbot/griddler
"исправить ошибку ArgumentError с помощью verify_authenticity_token в Rails API"
Я добавил protect_from_forgery with: :null_session
Я думаю, что null_session следует использовать в контроллерах API без использования сеанса. Он предоставляет пустой сеанс во время запроса.
https://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection/ClassMethods.html
В папке с контроллерами griddler добавьте новый файл из Griddler github или попробуйте следующий код.
/controllers/griddler/emails_controller.rb
class Griddler::EmailsController < ActionController::Base
skip_before_action :verify_authenticity_token, raise: false
protect_from_forgery with: :null_session
def create
normalized_params.each do |p|
process_email email_class.new(p)
end
head :ok
end
private
delegate :processor_class, :email_class, :processor_method, :email_service, to: :griddler_configuration
private :processor_class, :email_class, :processor_method, :email_service
def normalized_params
Array.wrap(email_service.normalize_params(params))
end
def process_email(email)
processor_class.new(email).public_send(processor_method)
end
def griddler_configuration
Griddler.configuration
end
end
Не совсем уверен во всем решении, но надеюсь, что это поможет получить еще какое-то направление.