如何在rake任务中包含ActionMailer类?

我想在我的rake任务中使用ActionMailer,以便在特定时间向人们发送电子邮件。

我在app / mailers文件夹中编写了一个mailer类,如下所示:

class AlertsMailer < ActionMailer::Base default from: 'x@y.com' def mail_alert(email_addresses, subject, url) @url = '#{url}' mail(to: email_addresses, subject: 'Alert') do |format| format.html { render '/alerts/list' } end end end 

然后我在rake任务中包含以下行:

 AlertsMailer.mail_alert(email_addresses, subject) 

当我尝试运行rake任务时:

 rake update_db 

我收到以下错误:

 uninitialized constant AlertsMailer 

我想我必须以某种方式在我的rake任务中加载邮件程序类,但我不知道该怎么做。

请帮忙。

我有以下它正在工作:

 # in lib/tasks/mailme.rake task :mailme => :environment do UserMailer.test_email(1).deliver end 

 # in app/mailers/user_mailer.rb class UserMailer < ActionMailer::Base def test_email(user_id) @user = User.find_by_id user_id if (@user) to = @user.email mail(:to => to, :subject => "test email", :from => "default_sender@foo.bar") do |format| format.text(:content_type => "text/plain", :charset => "UTF-8", :content_transfer_encoding => "7bit") end end end end 

从你的标签,我相信你正在使用Rails。

您可以通过要求依赖于环境任务来加载Rails环境,如下所示:

 task :my_task => :environment do ... end 

代替

 task :my_task do ... end 

如果有帮助,请告诉我。