我正在对我的应用程序进行故障排除,以了解电子邮件通过Rake失败的原因。
我的用户模型:
class User < ActiveRecord::Base
def User.test
puts "a string is returned"
UserMailer.email_test
end
end我的UserMailer:
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$ 发布于 2015-08-10 07:33:26
据我所知,您在运行rake任务时不会收到调试消息,因此电子邮件可能正在成功生成。我发现的唯一问题是您没有在生成的电子邮件中使用deliver方法,所以它没有被传递。你需要运行UserMailer.email_test.deliver来发送它。为了确保一切正常,我建议您在开发环境中安装letter_opener gem,它会在web浏览器选项卡中打开电子邮件。
https://stackoverflow.com/questions/31908537
复制相似问题