Автоматический отказ от встречи

Мне нужно автоматически проверять входящие запросы на встречи:

  • Если запрос исходит от кого-то извне, ничего не должно произойти.
  • Если запрос исходит от кого-то из моей компании (проверив электронную почту [email protected]), он должен проверить, есть ли у меня уже принятая встреча в указанный период времени, и по умолчанию отклонить запрос (плюс ответ).

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

Вот где я:

Private Sub Application_NewMail(oRequest As MeetingItem)

If oRequest.MessageClass <> "IPM.Schedule.Meeting.Request" Then
    Exit Sub
End If

Dim oAppt As AppointmentItem
Set oAppt = oRequest.GetAssociatedAppointment(True)

'Dim oResponse
'    Set oResponse = oAppt.Respond(olMeetingDeclined, True)
'    oResponse.Display

MsgBox ("Testing")

End Sub

Событие не сработает.


person hwmaterna    schedule 19.08.2019    source источник


Ответы (1)


Прежде всего, вам нужно обработать NewMailEx событие класса Application, которое запускается при получении нового элемента в папке «Входящие». Это событие запускается один раз для каждого полученного элемента, который обрабатывается Microsoft Outlook. Элемент может быть одним из нескольких различных типов, например, MailItem, MeetingItem или SharingItem. Строка EntryIDsCollection содержит идентификатор записи, соответствующий этому элементу.

Событие NewMailEx срабатывает, когда новое сообщение поступает в папку "Входящие" и до обработки правила клиента. Вы можете использовать идентификатор записи, возвращенный в массиве EntryIDCollection, для вызова NameSpace.GetItemFromID и обработайте элемент.

Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
    Dim mai As Object
    Set mai = Application.Session.GetItemFromID(strEntryId)
    MsgBox mai.Subject


End Sub

Затем вы можете проверить класс сообщения и привести объект к нужному типу. Или просто проверьте имя типа:

If TypeName(Item) = "MeetingItem" Then

Позже вы можете проверить свойства, связанные с отправителем, например, свойство SenderEmailAddress возвращает строку, представляющую адрес электронной почты отправителя элемента Outlook.

person Eugene Astafiev    schedule 19.08.2019