4.6 Delayed Articles

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:

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.