Enabling scheduled messages programatically

Use the Summary DateTime item $SendAt to enable scheduled messaging.

About this task

Example: Scheduling button formula
_def := @If(@IsAvailable($SendAt); $SendAt; @Now);
_newValue := @Prompt([OkCancelEdit]; "Schedule delivery"; 
"Enter date and time this message should be sent"; @Text(_def));
REM {If user cancels, execution stops.};
_newValue := @TextToTime(_newValue);
_valid := @If(!@IsTime(_newValue); @False; @Text(@Time(_newValue)) 
!= "" & @Text(@Date(_newValue)) != "");
@If(!_valid; @Prompt([Ok]; "Schedule delivery"; 
"Please supply a date and time."); _newValue > @Now; 
FIELD $SendAt := _newValue; FIELD $SendAt := @DeleteField);
Example: API
The item name is available as a #define in the SDK in stdnames.h
#define MAIL_SENDAFTER_ITEM "$SendAt" 
/* Scheduled mail date and time specified  */
Example: LotusScript®
	Sub SendDelayedNotice
	Description: Send a specified user an email scheduled for 
       delivery at 8AM tomorrow morning, with a reminder
       to review a specified document at that time.
		recipient: email address of recipient.
		linkDoc: the document they are to review.
Sub SendDelayedNotice(ByVal recipient As String, linkDoc As NotesDocument)
	Dim ses As New NotesSession, db As NotesDatabase, 
           memo As NotesDocument, body As NotesRichTextItem
	Dim sendTime As Variant
	Set db = ses.CurrentDatabase
	Set memo = db.CreateDocument
	Call memo.ReplaceItemValue("Form", "Memo")
	Call memo.ReplaceItemValue("Subject", "Document review reminder")
	sendTime = Today + (4./3.) ' 8am tomorrow morning (in the current TZ)
	Call memo.ReplaceItemValue("$SendAt", sendTime)
	Set body = memo.CreateRichTextItem("Body")
	Call body.Appendtext("Good morning! It's time to review this document: ")
	Call body.Appenddoclink(linkDoc, "", "")
	Call memo.Send(False, recipient)
End Sub