Я использую аддон Cloudmailin для получения электронной почты из своего приложения Heroku. Однако Cloudmailin не смог доставить - или, вернее, он получает 500 от Heroku каждый раз (так что адрес правильный).Cloudmailin получает 500 от Heroku при доставке электронной почты
Ошибка в логах Heroku является
Started POST "/incoming_mails" for 109.107.35.53 at 2013-02-27 08:54:22 +0000
2013-02-27T08:54:23+00:00 app[web.1]: Entering the controller! Controlling the e-mail!
2013-02-27T08:54:23+00:00 app[web.1]:
2013-02-27T08:54:23+00:00 app[web.1]: NoMethodError (undefined method `[]' for nil:NilClass):
2013-02-27T08:54:23+00:00 app[web.1]: app/controllers/incoming_mails_controller.rb:7:in `create'
Моя маршрутизация является правильным; «Ввод контроллера! Управление электронной почтой!» происходит от puts в начале класса, поэтому класс определенно вводится.
# routes.rb
post '/incoming_mails' => 'incoming_mails#create'
Сам файл выглядит следующим образом:
# /app/controllers/incoming_mails_controller.rb
class IncomingMailsController < ApplicationController
skip_before_filter :verify_authenticity_token
def create
puts "Entering the controller! Controlling the e-mail!"
Rails.logger.info params[:headers][:subject]
Rails.logger.info params[:plain]
Rails.logger.info params[:html]
if User.all.map(&:email).include? params[:envelope][:from] # check if user is registered
@thought = Thought.new
@thought.body = params[:plain].split("\n").first
@thought.user = User.where(:email => params[:envelope][:from])
@thought.date = DateTime.now
if @thought.save
render :text => 'Success', :status => 200
else
render :text => 'Internal failure', :status => 501
end
else
render :text => 'Unknown user', :status => 404 # 404 would reject the mail
end
end
end
пользователя и мысли являются ресурсы базы данных, используемые в других местах без проблем. Процедура сохранения такая же, что и в контроллере Thought, создаваемом для лесов. Логику params
и Rails.logger
я копировал с Cloudmailin Rails 3 example.
Я действительно смущен - где я иду не так? Я бы очень признателен за любые указатели.