Sending mail (ActionMailer) after a delay


#1

Hi,

I’d like my app to be able to send an email off at a predetermined time
after a given contoller action occurs.

Oh, and I’d like to be able to change this time on the fly (ie, reset
the timer) if the controller action is called again before the original
time is reached.

Does anyone know of a good way to do this?

Thanks a lot.


#2

Have a look at BackgrounDrb. Essentially you’d do something like
send_me_later = DeferredMail.new(:send_after=>2.hours.from_now), then
a BackgrounDrb worker would scan the table every minute and send mail
as needed. The controller could always destroy the DeferredMail object
before it was sent, if you needed to cancel the operation.

Gwyn.
http://gwyn.dezyne.net/


#3

Thanks Gwyn. I’ll give that a shot.