Чтение, запись и добавление получателей при создании встречи или сообщения в Outlook
API JavaScript для Office предоставляет асинхронные методы (Recipients.getAsync, Recipients.setAsync или Recipients.addAsync) для получения, задания или добавления получателей в форму создания встречи или сообщения. Эти асинхронные методы доступны только для создания надстроек. Чтобы использовать эти методы, убедитесь, что манифест надстройки настроен соответствующим образом для Outlook, чтобы активировать надстройку в формах создания, как описано в разделе Создание надстроек Outlook для форм создания.
Некоторые свойства, представляющие получателей в сообщении или встрече, доступны для чтения в формах создания и чтения. Это свойства optionalAttendees и requiredAttendees для встреч и свойства cc и to для сообщений.
В форме чтения доступ к свойству можно получить напрямую из родительского объекта, например:
Office.context.mailbox.item.cc;
Но в форме создания, так как пользователь и надстройка могут вставлять или изменять получателя одновременно, необходимо использовать асинхронный метод getAsync
для получения этих свойств, как показано в следующем примере.
Office.context.mailbox.item.cc.getAsync(callback);
Эти свойства доступны для доступа к записи только в формах создания, а не в формах чтения.
Как и большинство асинхронных методов в API JavaScript для Office, getAsync
, setAsync
и addAsync
принимают необязательные входные параметры. Дополнительные сведения о том, как указать эти необязательные входные параметры, см. в разделе Передача необязательных параметров в асинхронные методы статьи Асинхронное программирование в надстройках Office.
Извлечение получателей
В этом разделе показан пример кода, извлекающий получателей создаваемой встречи или сообщения, и показывающий адреса электронной почты получателей.
В API JavaScript для Office, так как свойства, представляющие получателей встречи (optionalAttendees
и requiredAttendees
), отличаются от свойств сообщения (ск,cc
, и to
), следует сначала использовать свойство item.itemType, чтобы определить, является ли создаваемый элемент встречей или сообщением. В режиме создания все эти свойства встреч и сообщений являются объектами Recipients , поэтому можно вызвать асинхронный метод , Recipients.getAsync
чтобы получить соответствующих получателей.
Чтобы использовать getAsync
, предоставьте функцию обратного вызова для проверки состояния, результатов и ошибок, возвращаемых асинхронным getAsync
вызовом. Функция обратного вызова возвращает выходной параметр asyncResult . Используйте свойства status
и error
, чтобы проверить состояние и все сообщения об ошибках асинхронного вызова, а также его value
свойство, чтобы получить фактических получателей. Они представляются как массив объектов EmailAddressDetails. Вы также можете предоставить дополнительные сведения для функции обратного вызова с помощью необязательного asyncContext
параметра в вызове getAsync
.
Обратите внимание, что так как getAsync
метод является асинхронным, при наличии последующих действий, которые зависят от успешного получения получателей, следует упорядочить код для запуска таких действий только в соответствующей функции обратного вызова после успешного завершения асинхронного вызова.
Важно!
Метод getAsync
возвращает только получателей, разрешенных клиентом Outlook. Разрешенный получатель имеет следующие характеристики.
- Если у получателя есть сохраненная запись в адресной книге отправителя, Outlook разрешает адрес электронной почты в сохраненное отображаемое имя получателя.
- Перед именем или адресом электронной почты получателя появится значок состояния собрания Teams.
- После имени или адреса электронной почты получателя появится точка с запятой.
- Имя или адрес электронной почты получателя подчеркнут или заключены в поле.
Чтобы разрешить адрес электронной почты после его добавления в почтовый элемент, отправитель должен использовать клавишу TAB или выбрать предлагаемый контакт или адрес электронной почты из списка автозаполнения.
Если в Outlook в Интернете и в Windows (новые и классические) пользователь создает новое сообщение, выбрав ссылку на адрес электронной почты контакта из контакта или карточки профиля, ему необходимо сначала разрешить адрес электронной почты, чтобы его можно было включить в результаты getAsync
звонка.
let item;
// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
if (info.host === Office.HostType.Outlook) {
item = Office.context.mailbox.item;
getAllRecipients();
}
});
// Gets the email addresses of all the recipients of the item being composed.
function getAllRecipients() {
let toRecipients, ccRecipients, bccRecipients;
// Verify if the mail item is an appointment or message.
if (item.itemType === Office.MailboxEnums.ItemType.Appointment) {
toRecipients = item.requiredAttendees;
ccRecipients = item.optionalAttendees;
}
else {
toRecipients = item.to;
ccRecipients = item.cc;
bccRecipients = item.bcc;
}
// Get the recipients from the To or Required field of the item being composed.
toRecipients.getAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
write(asyncResult.error.message);
return;
}
// Display the email addresses of the recipients or attendees.
write(`Recipients in the To or Required field: ${displayAddresses(asyncResult.value)}`);
});
// Get the recipients from the Cc or Optional field of the item being composed.
ccRecipients.getAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
write(asyncResult.error.message);
return;
}
// Display the email addresses of the recipients or attendees.
write(`Recipients in the Cc or Optional field: ${displayAddresses(asyncResult.value)}`);
});
// Get the recipients from the Bcc field of the message being composed, if applicable.
if (bccRecipients.length > 0) {
bccRecipients.getAsync((asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
write(asyncResult.error.message);
return;
}
// Display the email addresses of the recipients.
write(`Recipients in the Bcc field: ${displayAddresses(asyncResult.value)}`);
});
} else {
write("Recipients in the Bcc field: None");
}
}
// Displays the email address of each recipient.
function displayAddresses (recipients) {
for (let i = 0; i < recipients.length; i++) {
write(recipients[i].emailAddress);
}
}
// Writes to a div with id="message" on the page.
function write(message) {
document.getElementById("message").innerText += message;
}
Установка получателей
В этом разделе показан пример кода, устанавливающий получателей встречи или сообщения, создаваемых пользователем. При установке получателей все существующие получателей перезаписываются. В этом примере сначала проверяется, Recipients.setAsync
является ли почтовый элемент встречей или сообщением, поэтому он может вызвать асинхронный метод , для соответствующих свойств, представляющих получателей встречи или сообщения.
При вызове setAsync
укажите массив в качестве входного аргумента recipients
для параметра в одном из следующих форматов.
- массив строк, являющихся SMTP-адресами;
- массив словарей, каждый из которых содержит отображаемое имя и адрес электронной почты, как показано в следующем примере кода;
- Массив объектов, аналогичный
EmailAddressDetails
тому, который возвращается методомgetAsync
.
При необходимости можно указать функцию обратного вызова в качестве входного аргумента setAsync
для метода, чтобы убедиться, что любой код, зависящий от успешной настройки получателей, будет выполняться только в этом случае. Если вы реализуете функцию обратного вызова, используйте status
свойства и error
выходного asyncResult
параметра, чтобы проверить состояние и все сообщения об ошибках асинхронного вызова. Чтобы предоставить дополнительные сведения функции обратного вызова, используйте необязательный asyncContext
параметр в вызове setAsync
.
let item;
// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
if (info.host === Office.HostType.Outlook) {
item = Office.context.mailbox.item;
setRecipients();
}
});
// Sets the recipients of the item being composed.
function setRecipients() {
let toRecipients, ccRecipients, bccRecipients;
// Verify if the mail item is an appointment or message.
if (item.itemType === Office.MailboxEnums.ItemType.Appointment) {
toRecipients = item.requiredAttendees;
ccRecipients = item.optionalAttendees;
}
else {
toRecipients = item.to;
ccRecipients = item.cc;
bccRecipients = item.bcc;
}
// Set the recipients in the To or Required field of the item being composed.
toRecipients.setAsync(
[{
"displayName": "Graham Durkin",
"emailAddress": "graham@contoso.com"
},
{
"displayName": "Donnie Weinberg",
"emailAddress": "donnie@contoso.com"
}],
(asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
console.log("Successfully set the recipients in the To or Required field.");
// Run additional operations appropriate to your scenario.
});
// Set the recipients in the Cc or Optional field of the item being composed.
ccRecipients.setAsync(
[{
"displayName": "Perry Horning",
"emailAddress": "perry@contoso.com"
},
{
"displayName": "Guy Montenegro",
"emailAddress": "guy@contoso.com"
}],
(asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
console.log("Successfully set the recipients in the Cc or Optional field.");
// Run additional operations appropriate to your scenario.
});
// Set the recipients in the Bcc field of the message being composed.
if (bccRecipients) {
bccRecipients.setAsync(
[{
"displayName": "Lewis Cate",
"emailAddress": "lewis@contoso.com"
},
{
"displayName": "Francisco Stitt",
"emailAddress": "francisco@contoso.com"
}],
(asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
console.log("Successfully set the recipients in the Bcc field.");
// Run additional operations appropriate to your scenario.
});
}
}
Добавление получателей
Если вы не хотите перезаписывать существующих получателей в встрече или сообщении, вместо использования Recipients.setAsync
используйте Recipients.addAsync
асинхронный метод для добавления получателей.
addAsync
работает так же, как setAsync
и в том, что требуется входной recipients
аргумент. При необходимости можно указать функцию обратного вызова и любые аргументы для обратного вызова с помощью asyncContext
параметра . Затем проверьте состояние, результат и все ошибки асинхронного addAsync
вызова с помощью asyncResult
выходного параметра функции обратного вызова. В следующем примере проверяется, является ли создаваемый элемент встречей, а затем к нему добавляются два необходимых участника.
let item;
// Confirms that the Office.js library is loaded.
Office.onReady((info) => {
if (info.host === Office.HostType.Outlook) {
item = Office.context.mailbox.item;
addAttendees();
}
});
// Adds the specified recipients as required attendees of the appointment.
function addAttendees() {
if (item.itemType === Office.MailboxEnums.ItemType.Appointment) {
item.requiredAttendees.addAsync(
[{
"displayName": "Kristie Jensen",
"emailAddress": "kristie@contoso.com"
},
{
"displayName": "Pansy Valenzuela",
"emailAddress": "pansy@contoso.com"
}],
(asyncResult) => {
if (asyncResult.status === Office.AsyncResultStatus.Failed) {
console.log(asyncResult.error.message);
return;
}
console.log("Successfully added the required attendees.");
// Run additional operations appropriate to your scenario.
});
}
}
См. также
- Просмотр и изменение данных элемента в форме создания элементов Outlook
- Просмотр и изменение данных элемента Outlook в формах просмотра и создания
- Создание надстроек Outlook для форм создания
- Асинхронное программирование в случае надстроек Office
- Считывание и запись темы при создании встречи или сообщения в Outlook
- Вставка данных в текст при создании встречи или сообщения в Outlook
- Просмотр или изменение расположения при создании встречи в Outlook
- Просмотр или изменение времени при создании встречи в Outlook
Office Add-ins