我正在使用Cloudmailin插件從我的Heroku應用程序接收電子郵件。但是,Cloudmailin無法提供 - 或者說,每次從Heroku獲得500個(因此地址是正確的)。Cloudmailin在發送電子郵件時從Heroku獲得500個
在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'
我的路由是正確的; 「進入控制器!控制電子郵件!」來自課程開始時的投入,所以課堂肯定會進入。
# 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控制器中工作的過程相同。我從Cloudmailin Rails 3 example複製了params
和Rails.logger
邏輯。
我真的很困惑 - 我哪裏錯了?我真的很感激任何指針。