Бөлісу құралы:


Получение и настройка заголовков в Интернете для сообщения в надстройке Outlook

Общие сведения

Распространенным требованием при разработке надстроек Outlook является хранение пользовательских свойств, связанных с надстройкой, на разных уровнях. В настоящее время пользовательские свойства хранятся на уровне элемента или почтового ящика.

  • Уровень элемента. Для свойств, которые применяются к конкретному элементу, используйте объект CustomProperties . Например, сохраните код клиента, связанный с пользователем, отправившим электронное письмо.
  • Уровень почтового ящика. Для свойств, которые применяются ко всем почтовым элементам в почтовом ящике пользователя, используйте объект RoamingSettings . Например, сохраните предпочтения пользователя для отображения температуры в определенной шкале.

Оба типа свойств не сохраняются после того, как элемент покинет сервер Exchange Server, поэтому получатели электронной почты не могут получить свойства, заданные для элемента. Таким образом, разработчики не могут получить доступ к этим параметрам или другим свойствам MIME для улучшения сценариев чтения.

Хотя вы можете задать заголовки в Интернете с помощью запросов веб-служб Exchange (EWS), в некоторых случаях выполнение запроса EWS не будет работать. Например, в режиме создания на рабочем столе Outlook идентификатор элемента не синхронизируется saveAsync в кэшированном режиме.

Совет

Дополнительные сведения об использовании этих параметров см. в статье Получение и настройка метаданных надстройки для надстройки Outlook.

Назначение API заголовков в Интернете

Api-интерфейсы заголовков, представленные в наборе обязательных почтовых ящиков 1.8, позволяют разработчикам:

  • Сведения о метках в сообщении электронной почты, которое сохраняется после выхода из Exchange для всех клиентов.
  • Чтение сведений о сообщении электронной почты, которое сохранялось после того, как сообщение покинуло Exchange, во всех клиентах в сценариях чтения почты.
  • Получите доступ ко всему заголовку MIME сообщения электронной почты.

Схема заголовков в Интернете. Текст: Пользователь 1 отправляет сообщение электронной почты. Надстройка управляет пользовательскими заголовками в Интернете во время создания электронной почты пользователем. Пользователь 2 получает сообщение электронной почты. Надстройка получает заголовки Интернета из полученного сообщения электронной почты, а затем анализирует и использует пользовательские заголовки.

Поддерживаемые клиенты

Чтобы использовать API заголовков в Интернете в надстройке, клиент Outlook должен поддерживать набор требований 1.8 или более поздней версии. Сведения о поддерживаемых клиентах см. в разделе Поддержка клиентов Outlook.

API заголовков в Интернете также поддерживается в Outlook для Android и iOS, начиная с версии 4.2405.0. Дополнительные сведения о функциях, поддерживаемых в Outlook на мобильных устройствах, см. в статье Api JavaScript Outlook, поддерживаемые в Outlook на мобильных устройствах.

Настройка заголовков в Интернете при создании сообщения

Используйте свойство item.internetHeaders для управления пользовательскими заголовками Интернета, размещенными в текущем сообщении в режиме создания.

Пример настройки, получения и удаления пользовательских заголовков в Интернете

В следующем примере показано, как задать, получить и удалить пользовательские заголовки в Интернете.

// Set custom internet headers.
function setCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.setAsync(
    { "preferred-fruit": "orange", "preferred-vegetable": "broccoli", "best-vegetable": "spinach" },
    setCallback
  );
}

function setCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully set headers");
  } else {
    console.log("Error setting headers: " + JSON.stringify(asyncResult.error));
  }
}

// Get custom internet headers.
function getSelectedCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.getAsync(
    ["preferred-fruit", "preferred-vegetable", "best-vegetable", "nonexistent-header"],
    getCallback
  );
}

function getCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Selected headers: " + JSON.stringify(asyncResult.value));
  } else {
    console.log("Error getting selected headers: " + JSON.stringify(asyncResult.error));
  }
}

// Remove custom internet headers.
function removeSelectedCustomHeaders() {
  Office.context.mailbox.item.internetHeaders.removeAsync(
    ["best-vegetable", "nonexistent-header"],
    removeCallback);
}

function removeCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Successfully removed selected headers");
  } else {
    console.log("Error removing selected headers: " + JSON.stringify(asyncResult.error));
  }
}

setCustomHeaders();
getSelectedCustomHeaders();
removeSelectedCustomHeaders();
getSelectedCustomHeaders();

/* Sample output:
Successfully set headers
Selected headers: {"best-vegetable":"spinach","preferred-fruit":"orange","preferred-vegetable":"broccoli"}
Successfully removed selected headers
Selected headers: {"preferred-fruit":"orange","preferred-vegetable":"broccoli"}
*/

Получение заголовков в Интернете при чтении сообщения

Вызовите метод item.getAllInternetHeadersAsync , чтобы получить заголовки интернета в текущем сообщении в режиме чтения.

Получение параметров отправителя из примера с текущими заголовками MIME

На основе примера из предыдущего раздела следующий код показывает, как получить предпочтения отправителя из заголовков MIME текущего сообщения электронной почты.

Office.context.mailbox.item.getAllInternetHeadersAsync(getCallback);

function getCallback(asyncResult) {
  if (asyncResult.status === Office.AsyncResultStatus.Succeeded) {
    console.log("Sender's preferred fruit: " + asyncResult.value.match(/preferred-fruit:.*/gim)[0].slice(17));
    console.log("Sender's preferred vegetable: " + asyncResult.value.match(/preferred-vegetable:.*/gim)[0].slice(21));
  } else {
    console.log("Error getting preferences from header: " + JSON.stringify(asyncResult.error));
  }
}

/* Sample output:
Sender's preferred fruit: orange
Sender's preferred vegetable: broccoli
*/

Важно!

Этот пример подходит для простых случаев. Для получения более сложных сведений (например, заголовки с несколькими экземплярами или сложенные значения, как описано в RFC 2822), попробуйте использовать соответствующую библиотеку анализа MIME.

В настоящее время заголовки Интернета являются конечным ресурсом в почтовом ящике пользователя. Когда квота исчерпана, вы не сможете создавать в этом почтовом ящике дополнительные заголовки в Интернете, что может привести к непредвиденному поведению клиентов, которые полагаются на эту функцию.

При создании заголовков в Интернете в надстройке используйте следующие рекомендации.

  • Create необходимое минимальное количество заголовков. Квота заголовков зависит от общего размера заголовков, применяемых к сообщению. В Exchange Online ограничение заголовка ограничено 256 КБ, а в локальной среде Exchange ограничение определяется администратором вашей организации. Дополнительные сведения об ограничениях заголовков см. в разделе ограничения Exchange Online сообщений и ограничения Exchange Server сообщений.
  • Присвойте заголовкам имена, чтобы вы могли повторно использовать и обновлять их значения позже. Таким образом, избегайте именования заголовков переменным образом (например, на основе введенных пользователем данных, метки времени и т. д.).

См. также