簡體   English   中英

ActiveMailer Email 未從 Rake 任務發送

[英]ActiveMailer Email Not Sending from Rake Task

我有一堆應該從 rake 任務中發送的電子郵件。

這是整個send_notifications.rake文件:

desc "Send today's notifications."
task send_notifications: :environment do
  require 'time'
  puts 7.days.from_now
  
  phases = TeamProjectPhase.all
  phases.each do |phase|
    if phase.ends == 7.days.from_now && !phase.admin_confirmed
      TeamMailer.due_date_approaching(phase).deliver
    end
  end

  phases = TeamProjectPhase.all
  phases.each do |phase|
    if phase.ends.today? && !phase.admin_confirmed
      TeamMailer.due_date_here(phase).deliver
    end
  end

  phases = TeamProjectPhase.all
  phases.each do |phase|
    if phase.ends.today? && !phase.admin_confirmed
      TeamMailer.due_date_missed_admin(phase).deliver
    end
  end

  tasks = TeamTask.all
  tasks.each do |task|
    if task.due == 7.days.from_now && !task.admin_confirmed
      TeamMailer.task_due_date_approaching(task).deliver
    end
  end

  tasks = TeamTask.all
  tasks.each do |task|
    if task.due.today? && !task.admin_confirmed
      TeamMailer.task_due_date_here(task).deliver
    end
  end

  tasks = TeamTask.all
  tasks.each do |task|
    if task.due.today? && !task.admin_confirmed
      TeamMailer.task_due_date_missed_admin(task).deliver
    end
  end

end

我已經使用puts來確定當我run rake send_notifications時,它會到達正確的 if 語句中以執行正確的任務和/或階段。

不幸的是,沒有任何電子郵件正在發送! 我試過用deliverdeliver_now結束它們。

誰能看到我做錯了什么?

一些代碼清理,所以你不會循環超過你需要的:

desc "Send today's notifications."
task send_notifications: :environment do
  require 'time'
  puts 7.days.from_now

  TeamProjectPhase.all.each do |phase|
    return unless phase.admin_confirmed
    
    TeamMailer.due_date_approaching(phase).deliver if phase.ends == 7.days.from_now
    
    if phase.ends.today?
      TeamMailer.due_date_here(phase).deliver
      TeamMailer.due_date_missed_admin(phase).deliver
    end
  end

  TeamTask.all.each do |task|
    return unless task.admin_confirmed

    TeamMailer.task_due_date_approaching(task).deliver if task.due == 7.days.from_now

    if task.due.today?
      TeamMailer.task_due_date_here(task).deliver
      TeamMailer.task_due_date_missed_admin(task).deliver
    end
  end
end

如果TeamMailer未發送,但其他郵件發送,我會將TeamMailer與工作郵件進行比較,以查看我可能忘記設置的內容(例如default from: "from@example.com"layout 'mailer'

如果TeamMailer在其他情況下發送,但不是從rake任務發送,我會使用調試器來檢查:

  1. ActionMailer隊列以查看 email 是否排隊發送
  2. ActionMailer 配置以確保perform_deliveries類的內容仍然true
  3. :environment設置和我的環境文件,以確保我沒有覆蓋某些東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM