Назад | Перейти на главную страницу

Скрипт для проверки общего календаря Exchange и отправки подробностей по электронной почте

Здесь мы работаем с сервером и Exchange 2003.

Есть общий календарь, в котором HR постоянно обновляют информацию о сотрудниках, находящихся в отпуске. Я ищу сценарий VB (или альтернативный), который будет извлекать заголовки "встреч" для каждого элемента на текущий день, а затем отправлять детали по электронной почте в почтовую группу, тем самым уведомляя группу о том, какие сотрудники находятся в оставь на день.

В результате тело письма должно быть:


Персонал в отпуске сегодня: Майк Дэвис Джеймс Стед


@Paul Robichaux - В конце концов я пошел по пути ADO, вот ключевые компоненты для заинтересованных:

Dim Rs, Conn, Url, Username, Password, Recipient
Set Rs = CreateObject("ADODB.Recordset")
Set Conn = CreateObject("ADODB.Connection")

'Configurable variables
Username = "Domain\username" ' AD domain\username
Password = "password" ' AD password
Url = "file://./backofficestorage/domain.com/MBX/username/Calendar" 'path to user's mailbox and folder
Recipient = "email@address.com"

Conn.Provider = "ExOLEDB.DataSource"

Conn.Open Url, Username, Password
Set Rs.ActiveConnection = Conn


Rs.Source = "SELECT ""DAV:href"", " & _
" ""urn:schemas:httpmail:subject"", " & _
" ""urn:schemas:calendar:dtstart"", " & _
" ""urn:schemas:calendar:dtend"" " & _
"FROM scope('shallow traversal of """"') "
Rs.Open
Rs.MoveFirst

strOutput = ""
Do Until Rs.EOF

    If DateDiff("s", Rs.Fields("urn:schemas:calendar:dtstart"), date) >= 0 And DateDiff("s", Rs.Fields("urn:schemas:calendar:dtend"), date) < 0 Then
        strOutput = strOutput & "<p><font size='2' color='black' face='verdana'><b>" & Rs.Fields("urn:schemas:httpmail:subject") & "</b><br />" & vbCrLf
        strOutput = strOutput & "<b>From: </b>" & Rs.Fields("urn:schemas:calendar:dtstart") & vbCrLf
        strOutput = strOutput & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>To: </b>" & Rs.Fields("urn:schemas:calendar:dtend") & "<br /><br />" & vbCrLf
    End If

    Rs.MoveNext
Loop

Conn.Close

Set Conn = Nothing
Set Rec = Nothing

После этого вы можете делать то, что вам нравится, с помощью srtOutput, я случайно использовал CDO для отправки электронного письма:

Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Subject"
objMessage.From = "email@address.com"
objMessage.To = Recipient
objMessage.HTMLBody = strOutput
objMessage.Send

S

Это можно сделать с помощью библиотек объектов данных совместной работы (CDO). Их не так уж и сложно использовать. Взгляни на этот образец. По сути, вам нужно открыть папку календаря, используя пользователя с соответствующими разрешениями, получить встречи на день и перебрать их.