访问邮件程序方法而不发送电子邮件

时间:2013-02-17 14:22:55

标签: ruby-on-rails-3 actionmailer delayed-job

我在Rails 3中有一个工作邮件。

我想在邮件程序方法中有一些逻辑,决定是否通过电子邮件发送。 我不能在邮件之外使用这个逻辑,因为我正在使用Delayed_job延迟。我把电子邮件延迟了一个小时。如果未满足条件,我会发送电子邮件。

1。有没有办法输入邮件程序方法而不是完成发送(优雅地)

2。有没有更好的方法来实现我的目标?

代码示例

这是邮件

class MessagesMailer < ActionMailer::Base
  def message_notification(user, message)
    @user = user
    @msg = message
    mail(to: @user.email, from: "#{@msg.sender.name} <me@myapp.com>", subject: "You have recieved a new message from #{@msg.sender.name}")
  end
end
整个应用都会调用

MessagesMailer.delay(:run_at => 5.minutes.from_now).message_notification(@user, @message),特别是来自MessagesController

我想检查@user是否已阅读该消息。如果是这样,请不要发送电子邮件。 Delay_job会在5分钟内执行message_notification,但一旦该方法完成,无论内部发生了什么,都会发送电子邮件。

有没有办法在某个条件下取消投放(@user阅读邮件)?

0 个答案:

没有答案