Administrar la fecha y hora de entrega de un mensaje
El cliente de Outlook ofrece la opción de retrasar la entrega de un mensaje, pero requiere que mantenga Outlook y el dispositivo en ejecución para enviarlo en el momento especificado. Con la API de JavaScript de Office, ahora puede implementar un complemento de Outlook que envíe mensajes programados incluso con el cliente de Outlook cerrado o con el dispositivo desactivado. Esta funcionalidad proporciona a los usuarios la comodidad de programar campañas de marketing por correo electrónico o tiempo en que se entrega un mensaje durante el horario laboral de un compañero o cliente.
Nota:
La compatibilidad con esta característica se introdujo en el conjunto de requisitos 1.13. Vea clientes y plataformas compatibles con este conjunto de requisitos.
Configuración del manifiesto
Para programar la entrega de un mensaje, el complemento debe poder activarse en el modo de redacción de mensajes. Esto se define mediante el punto de extensión MessageComposeCommandSurface en un manifiesto de solo complemento o la propiedad mailCompose "contexts" en un manifiesto unificado para Microsoft 365.
Para obtener más instrucciones sobre cómo configurar un manifiesto de complemento de Outlook, vea Manifiestos de complementos de Office.
Acceso a la propiedad de entrega de un mensaje
La propiedad item.delayDeliveryTime devuelve un objeto DelayDeliveryTime que proporciona métodos para obtener o establecer la fecha y hora de entrega de un mensaje.
Obtención de la fecha y hora de entrega de un mensaje
Para obtener la fecha y hora de entrega de un mensaje en modo de redacción, llame a item.delayDeliveryTime.getAsync como se muestra en el ejemplo siguiente. Si aún no se ha establecido una fecha de entrega en un mensaje, la llamada devuelve 0
. De lo contrario, devuelve un objeto Date de JavaScript.
// Gets the delivery date and time of a message.
Office.context.mailbox.item.delayDeliveryTime.getAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
const deliveryDate = asyncResult.value;
if (deliveryDate === 0) {
console.log("Your message will be delivered immediately when you select Send.");
} else {
const date = new Date(deliveryDate);
console.log(`Message delivery date and time: ${date.toString()}`);
}
});
Establecer la fecha y hora de entrega de un mensaje
Para retrasar la entrega de un mensaje, pase un objeto Date de JavaScript como parámetro al método item.delayDeliveryTime.setAsync , como se muestra en el ejemplo siguiente.
// Delays the delivery time by five minutes from the current time.
const currentTime = new Date().getTime();
const milliseconds = 5 * 60 * 1000;
const timeDelay = new Date(currentTime + milliseconds);
Office.context.mailbox.item.delayDeliveryTime.setAsync(timeDelay, (asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
console.log("Message delivery has been scheduled.");
});
Comportamiento y limitaciones de las características
Al programar la entrega de un mensaje mediante el item.delayDeliveryTime.setAsync
método , el retraso se procesa en el servidor. Esto permite enviar el mensaje incluso si el cliente de Outlook no se está ejecutando. En Outlook clásico en Windows, el mensaje no aparece en la carpeta Bandeja de salida , por lo que no podrá editar el mensaje ni cancelar su entrega después de seleccionar Enviar. Sin embargo, podrá revisar el mensaje desde la carpeta Elementos enviados . En Outlook en la Web, en Mac y en la nueva Outlook en Windows, el mensaje aparece en la carpeta Borradores hasta el tiempo de entrega programado. Mientras esté en la carpeta Borradores , podrá editar el mensaje antes de enviarlo.
El item.delayDeliveryTime.setAsync
comportamiento difiere de un mensaje programado mediante la opción de entrega retrasada nativa en el cliente de Outlook, que procesa el retraso del lado cliente. Un mensaje programado con esta opción aparece en la carpeta Bandeja de salida y solo se entrega si el cliente de Outlook desde el que se envió se ejecuta en el tiempo de entrega especificado.
Pruebe fragmentos de código de ejemplo en Script Lab
Obtenga el Script Lab para el complemento de Outlook y pruebe el fragmento de código de ejemplo "Obtener y establecer la entrega de mensajes (Compose de mensajes)". Para más información sobre Script Lab, consulte Explorar las API de JavaScript de Office con Script Lab.