【问题标题】:Rake ActionMailer issueRake ActionMailer 问题
【发布时间】:2015-08-09 20:28:51
【问题描述】:

我正在对我的应用程序进行故障排除,以了解电子邮件无法通过 Rake 的原因。

我的用户模型:

class User < ActiveRecord::Base
  def User.test
    puts "a string is returned"
    UserMailer.email_test
  end
end

我的用户邮箱:

class UserMailer < ActionMailer::Base
  def email_test
    mail to: "test", subject: "test"
  end
end

如果我从 rails 控制台 (User.test) 调用该方法,我将获得正确的输出:

a string is returned
Rendered user_mailer/email_test.html.erb within layouts/mailer (0.8ms)
Rendered user_mailer/email_test.text.erb within layouts/mailer (0.2ms)

UserMailer#email_test: processed outbound mail in 106.5ms
=> #<Mail::Message:69873560567220, Multipart: true, <To: test>, <Subject: test>, <Mime-Version: 1.0>, <Content-Type: multipart/alternative; boundary="--==_mimepart_55c7b5db58f18_16fd3f8cb2e279986086"; charset=UTF-8>>

现在我正在尝试将其移动到 lib/tasks/scheduler.rake 文件中的 rake 任务中,如下所示:

task :mytest => :environment do
  User.test
end

当我调用任务时使用

rake mytest

我返回的唯一项目是字符串,但与电子邮件无关(见下文)。

bastien@bastien-ThinkPad-T540p:~/rails/app-505/lib/tasks$ rake mytest
(in /home/bastien/rails/app-505)
a string is returned
bastien@bastien-ThinkPad-T540p:~/rails/app-505/lib/tasks$ 

【问题讨论】:

  • 在您的 User.test 类方法中使用 binding.pry 之前的 UserMailer.email_test。然后在运行 rake 任务时尝试从 pry 控制台调用 UserMailer.email_test 方法。看看它是否显示任何错误,或者你可以从那里得到任何线索。

标签: ruby-on-rails ruby rake-task


【解决方案1】:

据我所知,您在运行 rake 任务时不会收到调试消息,因此电子邮件可能已成功生成。我发现的唯一问题是您没有在生成的电子邮件中使用deliver 方法,所以它没有被传递。您需要运行UserMailer.email_test.deliver 来发送它。为确保一切正常,我建议您在开发环境中安装 letter_opener gem,它会在 Web 浏览器选项卡中打开电子邮件。

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 2011-07-05
    • 2015-02-16
    • 2010-12-28
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多