Sometimes, you might wish to delay the sending of a message. For
example, you might wish to arrange for a message to turn up just in time
to remind your about the birthday of your Significant Other. For this,
there is the gnus-delay
package. Setup is simple:
(gnus-delay-initialize)
Normally, to send a message you use the C-c C-c command from
Message mode. To delay a message, use C-c C-j
(gnus-delay-article
) instead. This will ask you for how long the
message should be delayed. Possible answers are:
42d
means to delay for 42 days. Available letters are m
(minutes), h
(hours), d
(days), w
(weeks), M
(months) and Y
(years).
YYYY-MM-DD
. The message will be
delayed until that day, at a specific time (eight o’clock by default).
See also gnus-delay-default-hour
.
hh:mm
format, 24h, no am/pm
stuff. The deadline will be at that time today, except if that time has
already passed, then it’s at the given time tomorrow. So if it’s ten
o’clock in the morning and you specify 11:15
, then the deadline
is one hour and fifteen minutes hence. But if you specify 9:20
,
that means a time tomorrow.
The action of the gnus-delay-article
command is influenced by a
couple of variables:
gnus-delay-default-hour
¶When you specify a specific date, the message will be due on that hour on the given date. Possible values are integers 0 through 23.
gnus-delay-default-delay
¶This is a string and gives the default delay. It can be of any of the formats described above.
gnus-delay-group
¶Delayed articles will be kept in this group on the drafts server until
they are due. You probably don’t need to change this. The default
value is "delayed"
.
gnus-delay-header
¶The deadline for each article will be stored in a header. This variable
is a string and gives the header name. You probably don’t need to
change this. The default value is "X-Gnus-Delayed"
.
The way delaying works is like this: when you use the
gnus-delay-article
command, you give a certain delay. Gnus
calculates the deadline of the message and stores it in the
X-Gnus-Delayed
header and puts the message in the
nndraft:delayed
group.
And whenever you get new news, Gnus looks through the group for articles
which are due and sends them. It uses the gnus-delay-send-queue
function for this. By default, this function is added to the hook
gnus-get-new-news-hook
. But of course, you can change this.
Maybe you want to use the demon to send drafts? Just tell the demon to
execute the gnus-delay-send-queue
function.
gnus-delay-initialize
¶By default, this function installs gnus-delay-send-queue
in
gnus-get-new-news-hook
. But it accepts the optional second
argument no-check
. If it is non-nil
,
gnus-get-new-news-hook
is not changed. The optional first
argument is ignored.
For example, (gnus-delay-initialize nil t)
means to do nothing.
Presumably, you want to use the demon for sending due delayed articles.
Just don’t forget to set that up :-)
When delaying an article with C-c C-j, Message mode will
automatically add a "Date"
header with the current time. In
many cases you probably want the "Date"
header to reflect the
time the message is sent instead. To do this, you have to delete
Date
from message-draft-headers
.