【问题标题】:Send mail via rake task : Missing host to link to通过 rake 任务发送邮件:缺少要链接的主机
【发布时间】:2012-08-17 07:41:22
【问题描述】:

我知道这已被多次看到,但我不明白我做错了什么。我正在尝试通过 rake 任务发送邮件,但出现此错误

缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host],或设置 :only_path 为 true

staging 环境中(托管在heroku 上)。困扰我的是,当我启动控制台时,我可以毫无问题地发送邮件。在开发中,我通过 rake 任务直接发送邮件没有问题。

您可以在this gist 中看到环境文件、mailer 类和 rake 任务。我真的不明白我在这里做错了什么。

非常感谢您的宝贵时间!

【问题讨论】:

    标签: ruby-on-rails-3 email heroku rake


    【解决方案1】:

    当我得到这个时,我必须将 :host 值放在 production.rb 的 App::Application.configure 块中。

    我不知道这是否会转化为 heroku。

    在 production.rb 中,在 configure 块内添加以下内容:

      config.action_mailer.default_url_options = { 
        :host => "your-domain.com" 
      }
    

    如果这需要是变量(对于 heroku),您可以在这里使用环境变量。

    【讨论】:

    • 这是我为staging 环境所做的
    • 您是否可能没有在暂存环境中运行 rake 任务?
    • 根据heroku configRACK_ENVRAILS_ENV 都设置为staging。我自己使用heroku run RAILS_ENV=staging rake mailers:congrats --trace 运行了 rake 任务,但并不幸运。
    • 你能在 staging 本地运行吗? heroku 可能正在更改或删除您的配置文件。
    • 我可以从 heroku 控制台使用Routines.congrats(book).deliver 发送我的邮件,而不会遇到任何暂存问题,是的。
    【解决方案2】:

    作为一种解决方法,我在每个使用url_for 的方法中指定主机。对我来说幸运的是只有两个电话,但如果有人知道,我想知道答案。

    【讨论】:

      猜你喜欢
      • 2013-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      相关资源
      最近更新 更多