HOWTO: Bind an Agent to an Exchange Server Mailbox Folder with VC++
ID: Q248349
|
The information in this article applies to:
-
Microsoft Exchange Server, version 5.5
-
Collaboration Data Objects (CDO), version 1.21
SUMMARY
This article contains a Microsoft Visual C++ code sample that demonstrates how to bind an agent to an Inbox using Collaboration Data Objects (CDO) and ESCONF libraries. The article assumes that the Inbox folder is located on an Exchange Server 5.5 computer.
MORE INFORMATION
Sample Code
#include <stdio.h>
#include <tchar.h>
#import <cdo.dll> no_namespace
#import "c:\\Program Files\\Microsoft Office\\Office\\Addins\\esconf.dll" no_namespace
struct StartOle {
StartOle() {CoInitialize(NULL);}
~StartOle() {CoUninitialize(); }
} _inst_StartOle;
void dump_com_error(_com_error &e)
{
_tprintf(_T("Oops - hit an error!\n"));
_tprintf(_T("\a\tCode = %08lx\n"), e.Error());
_tprintf(_T("\a\tCode meaning = %s\n"), e.ErrorMessage());
_tprintf(_T("\a\tWcode = %08lx\n"), e.WCode());
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
_tprintf(_T("\a\tSource = %s\n"), (LPCTSTR) bstrSource);
_tprintf(_T("\a\tDescription = %s\n"), (LPCTSTR) bstrDescription);
}
void main (void)
{
try {
// Setup MAPI session
_SessionPtr pSession("MAPI.Session");
pSession->Logon("YourProfileName");
// Setup Events object
IEventsPtr pEvents("MSExchange.Events");
pEvents->put_Session(pSession->GetMAPIOBJECT());
// Get pointer to Inbox
_variant_t vInbox(pSession->GetInbox());
// Get BoundFolder and associated Event Bindings
IBoundFolderPtr pBoundFolder(pEvents->GetBoundFolder(&vInbox, true));
IEventBindingsPtr pBindings(pBoundFolder->GetBindings());
// Create new event binding
IEventBindingPtr pBinding(pBindings->Add());
_bstr_t bstrName("TestBinding");
pBinding->PutName(bstrName);
pBinding->PutActive(true);
// EventMask: None = 0,
// ScheduledEvents = 1,
// NewItemEvents = 2,
// ChangedItemEvents = 4,
// DeletedItemEvents = 8,
// AllEvents = 65535
pBinding->PutEventMask(1); // ScheduledEvents
// The following is the proper class ID for events based on the
// standard Event Scripting Agent, if you are using a custom
// event handler, you should specify it's class ID here instead.
pBinding->PutHandlerClassID("{69E54151-B371-11D0-BCD9-00AA00C1AB1C}");
ISchedulePtr pSchedule(pBinding->GetSchedule());
// ScheduleType:
// ScheduleTypeUnknown = 0,
// ScheduleTypeHourly = 1,
// ScheduleTypeDaily = 2,
// ScheduleTypeWeekly = 3
pSchedule->put_Type((long)1); //Hourly
pSchedule->PutInterval((long)60); //60 minutes
pBinding->SaveChanges();
pBoundFolder->SaveChanges();
_tprintf("TestBinding installed\n");
pSession->Logoff();
}
catch (_com_error &e)
{
dump_com_error(e);
}
return;
}
Please note that to bind an agent to Exchange Server Mailbox Folder, you must have at least Author permissions on the EventConfig_servername object in the Exchange Server directory.
REFERENCES
For more information on how to configure the appropriate permissions, please refer to the following Knowledge Base articles:
Q178351 Automatic Resource Booking Available with Sample Scripts
Q180121 Agents Tab Is Missing from Folder Properties
Additional query words:
Agent Bind CDO ESCONF
Keywords : kbCDO121 kbXchge550 kbMAPI kbMsg kbVC kbGrpMsg kbDSupport
Version : WINDOWS:1.21; winnt:5.5
Platform : WINDOWS winnt
Issue type : kbhowto