我正在尝试使用Heroku上的Mailgun和DelayedJob设置ActionMail,我已经完成了一切工作,直到DelayedJob使用Mailgun发起请求,但我从Mailgun获得400 Bad Request: 'from' parameter is missing
。
我的邮件是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]'
因为错误是没有正确设置from字段我登录到我的heroku控制台并测试了我的ENV
变量并且看到除了ENV['GMAIL_USERNAME']
之外所有变量都存在。我的生产环境中是否有任何原因导致该变量丢失?我不知道如何调试这个,因为我之前从未遇到像这样的环境变量的问题。
答案 0 :(得分:2)
我是个白痴,我设置figaro来处理我的环境变量并忘记将它们发布到heroku:
figaro heroku:set -e production
此外,您需要将application.yml中的所有变量包装在字符串中,因此我还必须将MAILGUN_PORT更新为&#39; 587&#39;。