Использование VBA в Outlook для сбора статистики по полученным электронным письмам

На работе мы используем общий почтовый ящик Outlook для получения электронных писем от наших пользователей, и на данный момент у нас есть ротация, чья очередь следить за почтовым ящиком и отвечать и т. д. Наше рабочее время было с 7:00 до 17:00 с тех пор, как мы запустили адрес электронной почты. .

В течение следующих 2 месяцев мы отслеживаем изменения в часах, когда мы (или, я должен сказать, только я) будем следить за почтовым ящиком до 23:00.

Что я хотел бы сделать, так это собрать некоторую статистику по электронным письмам, которые мы получаем, чтобы увидеть, стоит ли с точки зрения бизнеса сохранять более позднюю смену после следа.

Я думал о том, чтобы использовать некоторый VBA для проверки электронной почты в папке «Входящие», а затем разбить данные на некоторые статистические данные для управления, например:

Monday 06/05/12: 
49 emails received, 34 were replies, 15 were new
At 7am received: 0 emails
At 8am received: 1 emails
------
At 11pm received: 0 emails

так далее

Чтобы определить, является ли электронное письмо оригиналом или ответом, я думаю, проще всего увидеть, начинается ли тема с RE:? (Я знаю, что это ненадежно, но я думаю, что это сработает для базовой статистики)

Делал ли кто-нибудь что-нибудь подобное раньше? Есть ли простой/правильный способ сделать это?

Кто-нибудь получил какие-либо советы/образцы кода, которые были бы полезны?


person Jordan Wall    schedule 06.05.2013    source источник


Ответы (3)


Вы могли бы начать с чего-то вроде этого

Sub EmailStats()

    Dim olMail As MailItem
    Dim aOutput() As Variant
    Dim lCnt As Long
    Dim xlApp As Excel.Application
    Dim xlSh As Excel.Worksheet
    Dim flInbox As Folder

    Set flInbox = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)

    ReDim aOutput(1 To flInbox.Items.Count, 1 To 4)

    For Each olMail In flInbox.Items
        If TypeName(olMail) = "MailItem" Then
            lCnt = lCnt + 1
            aOutput(lCnt, 1) = olMail.SenderEmailAddress 'maybe stats on domain
            aOutput(lCnt, 2) = olMail.ReceivedTime 'stats on when received
            aOutput(lCnt, 3) = olMail.ConversationTopic 'group based on subject w/o regard to prefix
            aOutput(lCnt, 4) = olMail.Subject 'to split out prefix
        End If
    Next olMail

    Set xlApp = New Excel.Application
    Set xlSh = xlApp.Workbooks.Add.Sheets(1)

    xlSh.Range("A1").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput
    xlApp.Visible = True

End Sub

Если вы хотите добавить больше данных, просто измените оператор Redim, чтобы разместить больше столбцов, и добавьте их в блок If. Оказавшись в Excel (или, может быть, в Access или SQLServer, если данных много), вы можете добавить несколько вычислений, например

=IF(LEFT(@Subject,3)="RE:","Reply",IF(LEFT(@Subject,3)="FW:","Forward","Original"))

Затем крутитесь как сумасшедшие.

Вам нужна ссылка на библиотеку объектов Excel, чтобы приведенный выше код работал.

person Dick Kusleika    schedule 06.05.2013
comment
Спасибо, это сработало :) Просто нужно найти небольшое изменение, чтобы любые электронные письма от внутренних людей отображались как их адрес электронной почты, а не их полный адрес AD OU = и т. д. - person Jordan Wall; 09.05.2013
comment
Это должно быть проще. Это Application.GetNamespace("MAPI").CreateRecipient(olMail.SenderEmailAddress).AddressEntry.GetExchangeUser.PrimarySmtpAddress с форумов .codeguru.com/ - person Dick Kusleika; 10.05.2013

Я бы сделал шаг назад и использовал файлы журнала с почтового сервера, чтобы ответить на этот вопрос.

Раз в день вы можете просто получить отчет обо всех письмах, полученных почтовым ящиком. Если вы лично не имеете к ним доступа, то он должен быть у вашего почтового администратора.

person Phylogenesis    schedule 06.05.2013
comment
К сожалению, наши серверы Exchange находятся на аутсорсинге, и с них невозможно запросить какие-либо журналы :( - person Jordan Wall; 06.05.2013

Существует замечательный инструмент под названием OutlookStatView сделано замечательными ребятами из NirSoft.

образец скриншота:

табличная статистика электронной почты Outlook

если вы не очень заинтересованы в использовании VBA, попробуйте использовать расширенные параметры фильтрации, доступные для того же, с его помощью вы можете выбрать определенные папки и дату начала и время окончания для вашего мониторинга.

Примечание: это не будет в реальном времени или автоматизировано, это всего лишь ручной способ продемонстрировать возможности.

параметры сканирования почтового ящика: параметры сканирования почтового ящика

Работает на Windows 2000/XP/Vista/2003/2008/7/8/10.

Поддерживает любую версию Microsoft Outlook, включая Outlook 2016.

Я ищу альтернативы Mac и Linux.

этот ответ похож, но не совпадает с https://superuser.com/a/1226613/249975

person computingfreak    schedule 07.07.2017