我在rails中制作了一个项目,我希望添加自动电子邮件功能。我选择每当宝石用于此目的。我单独创建了rake任务以发送电子邮件。
email_tasks.rake
desc 'send digest email'
task send_digest_email: :environment do
# ... set options if any
InterviewScheduleMailer.sample_email(@interview_schedule).deliver!
end
安排文件
set :environment, :development
# Example:
#
# set :output, "/path/to/my/cron_log.log"
#
every :friday, :at => '3:52 am' do
rake 'send_digest_email'
end
every :friday, :at => '4:01 pm' do
runner "InterviewSchedule.sample_email"
end
我的电子邮件仅在我运行bundle exec send_digest_email时才会发送。
我希望根据日期将电子邮件发送给所有员工。例如谁有生日。所以电子邮件应该在上午12点自动发送。
答案 0 :(得分:0)
假设您使用的是* nix-type操作系统,您是否更新了cron选项卡以便在作业发生变化时使用?
您可以运行以下命令来查看crontab的内容
crontab -l
你可能会看到你的crontab内容类似于下面的
30 23 * * * /bin/bash -l -c 'cd /Users/xyz/myproject/Nov-02/myproject && myproject_bundle exec rake RAILS_ENV=development send_email'
您可以按照时间表
更新您的crontabwhenever -w
此处有更多详情crontab with rails
答案 1 :(得分:0)
以下是我如何使用调度程序,它在开发中不起作用但在生产中起作用
# add ,roles: [:app] if you are using capistrano for deployment
every 1.day, :at => '7:06 am' do
command "some linux commands"
end
# add ,roles: [:app] if you are using capistrano for deployment
every 1.day, at: '07:00 am' do
runner "DailyMailer.log_export_email.deliver_later"
end
# Learn more: http://github.com/javan/whenever
您也可以尝试直接触发邮件程序,但我建议您检查config / application.rb中的activejob队列适配器集
我使用sidekiq用于activejob队列和deliver_later方法来发送电子邮件。这种方式在后台运行。
您可能需要根据队列适配器为邮件程序使用不同的方法。
希望有所帮助