Справа нещодавно надійшла: ""Чи можемо ми отримати статус листа (читання / не читання) незалежно від того, чи було "повідомлення про читання" під час речення, і чи користувався користувачем повідомлення про читання чи ні?Що. У цій статті ми поговоримо про відстеження статусу читання листів на сервері Exchange On-Prem та декількох слів про цю функцію в Exchange Online (Microsoft 365).
Чому може знадобитися отримати статус читання повідомлення?
- Якщо лист дуже важливий, і необхідно, щоб кожен працівник ознайомився з ним;
- Багато компаній мають новини / дні народження \ документи, і необхідно збирати статистику, наскільки ефективні такі розсилки.
Чи можна отримати статус листа в біржовій коробці, незалежно від того, чи відправник вимагав повідомлення про читання?
Зміст:
- Ми отримуємо статус читання листа в сервері обміну
- Відстеження статусу читання листа в обмін в Інтернеті (Microsoft 365)
Ми отримуємо статус читання листа в сервері обміну
Поміркуйте, як отримати статус читання листа користувача у вікні сервера Exchange On-Prem. Для початку перевірте, чи включена ваша біржа Exchange Exchange Exchange Exchange Exchange
Get-ArganizationConfig | Виберіть ReadTrackingEnabled
Правдивий - Включений, помилковий - Інвалід.
Включіть повідомлення звітування за командою:
Set -organizationconfig -readtrackingenabled $ true
Лише після цієї команди інформація про читання листа буде введена в журналах Server Server.
Ви можете вимкнути технічне обслуговування журналу "Читання" на певні (наприклад, послуги або загальні) поля з командою:
Set -mailbox email_name@companyname -messagetraackingreadsenable $ fals
Наступний крок нам потрібно отримати посвідчення особи, t.до. Кожне повідомлення має унікальний ідентифікатор, і з електронною адресою та темою ми можемо заплутатися.
Ми отримуємо літери ідентифікатора за допомогою командира get-messagetrackinglog:
Get -messagetrackinglog -sender email_name@companyname -messageubject "тема листа" -start (Get -Date).Addhours (-48) -eventid приймати | Виберіть MessageId
У нашому прикладі лист від цього відправника з цією темою був надісланий кілька разів за останні 48 годин. Ви можете застосувати інші фільтри для отримання точного MessageId.
І ви можете зробити це простіше - відкрийте потрібну букву в Outlook, натисніть на файл - властивості та знайдіть листи в "заголовках Інтернету" Інтернету.
Далі, Shell Open Exchange Management та запустіть сценарій Get-MessageAdsSreport.PS1 (викладено нижче). Вам потрібно вказати назву поля та літери повідомлень-ine.
Як результат, ви отримаєте файл CSV зі статусом читання цього листа у всіх полях користувачів. Два статус можливі після того, як літери доставляються до коробки:
-
ЧИТАТИ - Повідомлення позначається як читання в поштової скриньки користувача
-
Нечитати - Повідомлення позначається як нечитати в поштовому скриньці користувача
Сам сценарій Get-MessageAdsSreport.PS1:[Cmdletbinding ()]
Парам (
[Параметр (обов'язковий = $ true)]
[Рядок] $ поштова скринька,
[Параметр (обов'язковий = $ true)]
[Рядок] $ messageId
)
$ output = @()
#Ми перевіряємо журнал
якщо (!(Get-ArganizationConfig).Readtrackingenabled)
Кинути "Відстеження статусу листа вимкнено"
#Витрата ідентифікаційних листів
$ Msg = пошук -messagetrackingreport $ mailbox -bypassdelegatechecking $ messageId
#Має бути один лист
якщо ($ msg.Count -ne 1)
Кинути "$ ($ msg).Кількість листів, знайдених на цьому ідентифікаторі "
#Ми отримуємо звіт
$ Report = get -MessagetRackingReport -Identity $ msg.Messagetrackingreportid -bypassdelegatechecking
#Ми отримуємо події
$ RepientTrackingEvents = @($ Report | Виберіть -SexPandPopety RecitientTrackingEvents)
#Генерування списку одержувачів
$ одержувачі = $ RecitientTrackingEvents | Виберіть RecitientAddress
#Ми отримуємо статус листа для кожного одержувача
Foreach ($ одержувач у $ одержувачів)
$ Події = get -messagetrackingreport -identity $ msg.Messagetrackingreportid -bypassdelegateckeing '
-Одержувач реципієнта $ одержувач.Реципієнтдрес -репорт Template
$ outputline = $ події.RecitientTrackingEvents [-1] | Виберіть одержувача, статусу, подій
$ output += $ outputLine
$ Випуск
$ Directory = "C: \ log \ rsr"
$ Filename = 'readstatusreport'
$ file = "$ ім'я файлу.CSV "
#Ми відображаємо звіт до CSV
$ output | Експорт -csv -notypeInformation -append -path "$ directory \ $ file"
Відстеження статусу читання листа в обмін в Інтернеті (Microsoft 365)
Я намагався трохи змінити цей сценарій, щоб отримати статус листів у ящиках користувачів хмарного обміну в Інтернеті.
Після підключення до свого орендаря Microsoft 365 за допомогою онлайн -модуля PowerShell Exchange я перевірив, чи є обмін в Інтернеті на статус читання листа. Варіант можливий MessagetrackingReadSenabled Увімкнено для всіх поля орендаря.
Get -Exomailbox -properties messagetraackingreadusenabled | Виберіть userprincipalname, messagetraackingreadsenabledable
Вам потрібно внести зміни до сценарію, t.до. Для відстеження листів в обмін в Інтернеті замість get-messagetrackinglog та пошуку-messagetrackingreport використовуються для командування Get-messagetrace
і Get-messagetcadeTail
. Але, на жаль, кластер get-messagetradedetail Cloud Exchange в Інтернеті не дозволяє отримувати статус листа. Можливо, в майбутньому Microsoft приведе функціональність командира Get-MessagetRadeTail на рівень земляного пошуку-messagetrackingReport, але він ще не працює.
Виявляється, єдиний доступний спосіб перевірити читати статус листа в Exchange Online - API Microsoft Graph. Вам потрібно перевірити майно ISREAD Букви. (https: // docs.Microsoft.Com/en-sus/graph/api/message-get?Перегляд = графік-Rest-1.0 & tabs = http).