Отслеживание статуса писем (прочитано, не прочитано)

Что бы иметь возможность отслеживания статуса (прочтено, не прочтено) писем в организации Exchange, необходимо включить журналирование статуса прочтение писем.

1. Проверьте, включено ли у вас журналирование статусов, для этого в EMS введите команду:

Get-OrganizationConfig | Select ReadTrackingEnabled

Вывод команды должен быть примерно следующим:

2. В случае, если журналирование ранее не включалось, включите его введя следующую команду:

Set-OrganizationConfig -ReadTrackingEnabled $true

Вывод команды будет выглядеть примерно следующим образом:

3. После включения журналирования, появится возможность отслеживать статусы о прочтении писем.

Что бы отключить журналирование для отдельных ящиков (например служебных или общих ящиков) введите команду:

Set-Mailbox info@nnnn.ru -MessageTrackingReadStatusEnabled $false

4. Далее необходимо узнать ID письма, статус которого нас интересует.

Что бы узнать ID введите следующую команду:

Get-MessageTrackingLog -Sender Pprodovikov@nnnn.ru -MessageSubject “Запрос” -Start (Get-Date).AddHours(-48) -EventId RECEIVE | Select MessageID

Вывод будет выглядеть примерно следующим образом:

5. Запустите скрипт Get-MessageReadStatusReport.ps1

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

Укажите имя ящика отправителя и Message-ID письма.

Результат со статусом отобразится в выводе команды, а так же в файле в корне диска “C”.

[CmdletBinding()]
param (
[Parameter( Mandatory=$true)]
[string]$Mailbox,
[Parameter( Mandatory=$true)]
[string]$MessageId
)
$output = @()
#Проверяем журналирование
if (!(Get-OrganizationConfig).ReadTrackingEnabled) {
throw “Трекинг статуса письма выключен”
}
#Берем ID письма
$msg = Search-MessageTrackingReport -Identity $Mailbox -BypassDelegateChecking -MessageId $MessageId
#Должно быть одно письмо
if ($msg.count -ne 1) {
throw “$($msg).count писем найдено по этому ID”
}
#Получаем отчет
$report = Get-MessageTrackingReport -Identity $msg.MessageTrackingReportId -BypassDelegateChecking
#Получаем события
$recipienttrackingevents = @($report | Select -ExpandProperty RecipientTrackingEvents)
#Генерируем список получателей
$recipients = $recipienttrackingevents | select recipientaddress
#Получаем статус письма для каждого получателя
foreach ($recipient in $recipients) {
$events = Get-MessageTrackingReport -Identity $msg.MessageTrackingReportId -BypassDelegateChecking `
-RecipientPathFilter $recipient.RecipientAddress -ReportTemplate RecipientPath
$outputline = $events.RecipientTrackingEvents[-1] | Select RecipientAddress,Status,EventDescription
$output += $outputline
}
$output
$directory = “C:\log\RSR”
$filename = ‘ReadStatusReport’
$file = “$filename.csv”
#Выводим отчет в csv
$output | Export-Csv -NoTypeInformation -Append -Path “$directory\$file”

Scroll to Top