2017-04-05 79 views
-1

我想在Heroku上設置使用Mailgun和DelayedJob的ActionMail,並且我已經得到了一切工作到DelayedJob正在用Mailgun啓動請求的點,但是我得到了一個來自Mailgun的400 Bad Request: 'from' parameter is missingRails環境變量未在Heroku上的生產設置

我的郵件是app/mailers/example_mailer.rb

class ExampleMailer < ApplicationMailer 

def sample_email(user) 
    @user = user 
    mailgun_client = Mailgun::Client.new ENV['MAILGUN_API_KEY'] 
    message_params = {:from  => ENV['GMAIL_USERNAME'], 
         :to  => @user.email, 
         :subject => 'Sample Mail Using Mailgun API', 
         :text  => 'Testing...'} 

    mailgun_client.send_message ENV['MAILGUN_DOMAIN'], message_params 

    end 
end 

config/application.yml

MAILGUN_API_KEY: '[REDACTED]' 
MAILGUN_ADDRESS: 'smtp.mailgun.org' 
MAILGUN_PORT:  587 
MAILGUN_DOMAIN: '[REDACTED]' 
MAILGUN_USERNAME: '[REDACTED]' 
MAILGUN_PASSWORD: '[REDACTED]' 
GMAIL_USERNAME: '[REDACTED]' 

那麼既然是,從現場沒有被設置錯誤正確我登錄到我的Heroku的控制檯,並測試了我ENV變量和羅,看到他們都存在,除了ENV['GMAIL_USERNAME']。我的生產環境中缺少這個變量是否有任何理由?我不知道如何調試,因爲我從來沒有遇到過像這樣的環境變量的問題。

回答

2

我是個白癡,我設置費加羅來處理我的環境變量,忘了將其發佈到Heroku的:

figaro heroku:set -e production 

此外,你需要用在字符串application.yml所有變量,所以我還必須將MAILGUN_PORT更新爲'587'。