我正在对我的应用程序进行故障排除,以了解为什么电子邮件通过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$
答案 0 :(得分:0)
据我所知,在运行rake任务时你不会收到调试消息,因此电子邮件可能正在成功生成。我发现的唯一问题是您未在生成的电子邮件中使用deliver
方法,因此无法投放。您需要运行UserMailer.email_test.deliver
才能发送它。为了确保一切正常,我建议您在开发环境中安装letter_opener gem,这将在Web浏览器选项卡中打开电子邮件。